2016-08-10 4 views
2

돛 JS (MongoDB를)에서 인구가 모음으로 계산합니다 .. 내가 사용 명령은 다음과 같습니다나는 두 가지 모델 카테고리와 재고와 관련이

Category.find(query).populate('inventories',{select: ['id']}); 

이 나에게 다음과 같은 결과를 제공

"categories": [ 
    { 
    "inventories": [ 
     { 
     "id": "4369b6bd-de15-4201-97b5-43a10e3ccb5f" 
     } 
    ], 
    "business": "578e17a7cb25beb418ef4680", 
    "name": "B", 
    "createdAt": "2016-07-19T17:41:25.184Z", 
    "deviceId": "353323063171945", 
    "updatedAt": "2016-07-19T12:11:49.819Z", 
    "id": "017af659-09ec-4f83-b5fb-b4d562912745" 
    }, 
    { 
    "inventories": [ 
     { 
     "id": "bffa55ac-724d-454d-b02f-bb3002b6ee99" 
     } 
    ], 
    "business": "578e17a7cb25beb418ef4680", 
    "name": "A", 
    "createdAt": "2016-07-19T17:40:47.009Z", 
    "deviceId": "353323063171945", 
    "updatedAt": "2016-07-19T12:11:49.813Z", 
    "id": "efb5a472-417a-4365-89d2-a0ba46f6a9b0" 
    }, 
    { 
    "inventories": [ 
     { 
     "id": "5c19106c-36c8-47ae-b596-97234867054e" 
     }, 
     { 
     "id": "5c191dfc-36c8-fa7ae-ber96-9df234867054e" 
     } 
    ], 
    "business": "578e17a7cb25beb418ef4680", 
    "name": "C", 
    "createdAt": "2016-07-19T17:42:06.661Z", 
    "deviceId": "353323063171945", 
    "updatedAt": "2016-07-19T12:13:50.305Z", 
    "id": "f75f59f8-6d5b-415d-9019-47c0bed5cb6a" 
    }, 
    { 
    "inventories": [ 
     { 
     "id": "10c7c06e-cfd4-45ec-8bd7-bf77e349fc3b" 
     } 
    ], 
    "business": "578e17a7cb25beb418ef4680", 
    "name": "D", 
    "createdAt": "2016-07-19T17:42:50.511Z", 
    "deviceId": "353323063171945", 
    "updatedAt": "2016-07-19T12:13:50.307Z", 
    "id": "8ad0fee5-9efe-49dc-ae24-761860874855" 
    } 
] 

하지만 내가 원하는 것은 인구 데이터는 단지 예에 대한 관련 기록 의 수를 반환 할 수 있습니다 :

"inventories": [ 
     2 
    ], 
    "business": "578e17a7cb25beb418ef4680", 
    "name": "C", 
    "createdAt": "2016-07-19T17:42:06.661Z", 
    "deviceId": "353323063171945", 
    "updatedAt": "2016-07-19T12:13:50.305Z", 
    "id": "f75f59f8-6d5b-415d-9019-47c0bed5cb6a" 
    }, 
,536,913,632 10

일부 웹 사이트에는 populateCount()라는 함수가 있습니다. 하지만 populateCount는 함수가 아닙니다. 도움말

+0

돛에'populateCount()'함수가 있다고 생각하지 않습니다. 검색된 카테고리별로 category.inventories = category.inventories.length를 지정할 수 있습니다. – Fissio

답변

3

돛은 이러한 기능을 제공하지 않지만이 문제는 매우 쉽게 해결됩니다. 인벤토리 배열을 계산하고 길이를 새 속성에 저장하면됩니다.

Category.find({ id : [1, 2] }) 
    .populate('inventories') 
    .then(function (categories) { 

    categories.forEach(function (category) { 
     category.inventoriesLength = category.inventories.length; 
    }); 

    });