1

문서를 계산은 다음과 같습니다MongoDB를 골재와 'myCollection'라는 컬렉션

{ 
    _id : 57b4b4e028108d801738a472, 
    updatedAt : 2016-08-17T19:03:01.831+0000, 
    createdAt : 2016-08-17T19:02:56.887+0000, 
    from : 57b1c2fc4bf55ba009b36c84, 
    to : 57b1c75e4bf55ba009b36c85, 
} 

내가 '에서' '에서'과의 발생을 계산하고이 같은 문서의 컬렉션 결국해야합니다

{ 
    "_id" : 7b1c2fc4bf55ba009b36c84, 
    "occurredInFrom" : 12, 
    "occurredInTo" : 16 
} 

여기서, _id는 '$ from'또는 '$ to'중 하나입니다. 충분하지 않다 "에서 $":

{ 
    $group: { 
    _id: "$from", 
     occurredInFrom: { $sum: 1 }, 
     occurredInTo: { $sum: 1} 
    } 
} 

나는 확실히 그 _id를 볼 수 있습니다

내가 쓴 잘못된 집계 쿼리

이입니다. 나에게 올바른 길을 보여 주시겠습니까?

참고 : 'myCollection'구조가 최종 구조가 아니므로 더 나은 구조가 있다고 생각되면 제안하십시오.

+2

에 관련 [MongoDB를 집계 쿼리 또는 너무 복잡?] (https://stackoverflow.com/questions/35161734/mongodb-aggregate-query-or-too-complex) 및 [Mongo Group 및 두 필드 합계] (https://stackoverflow.com/questions/35549200/mongo-group-and-sum-with-two-fields/35550524#35550524) – styvane

답변

1

보십시오이

db.myCollection.aggregate([ 
    { $project: 
    { _id: 0, 
     dir: [ 
     {id:"$from", from:{"$sum":1}, to:{"$sum":0}}, 
     {id:"$to", from:{"$sum":0}, to:{"$sum":1}} 
     ] 
    } 
    }, 
    { $unwind : "$dir" }, 
    { $group: 
    { 
     _id: "$dir.id", 
     occurredInFrom: { $sum: "$dir.from" }, 
     occurredInTo: { $sum: "$dir.to" } 
    } 
    } 
]) 
+0

예외 : 허용되지 않는 필드 형식 개체 표현식의 배열 ('dir'에서) 코드 : 15992 – Granga

+0

그래, 고쳤으며 내 db에서 작동합니다. –

+0

내 DB 버전 3.0 mongolab 샌드 박스 일 수 있습니다. 이 이전 버전에서 작동하도록하는 방법을 찾으려고 노력할 것입니다. 고맙습니다. – Granga