도 문서 구조에 대해 확실하지만, 당신은 당신이 다음 그룹화 및 합계 다음 프로젝트와 합계 한 후 2 개 그룹화 합계 수 2 개 diffrent 점수에 대한 2 개 diffrent 필드를 가지고있는 경우에하지 (즉, 의미가있는 경우)
그래서 예를 들어, 나는이 docuemnts 있습니다
> db.scores.find()
{ "_id" : ObjectId("5858ed67b11b12dce194eec8"), "user" : "bob", "score" : { "a" : 10 } }
{ "_id" : ObjectId("5858ed6ab11b12dce194eec9"), "user" : "bob", "score" : { "a" : 12 } }
{ "_id" : ObjectId("5858ed6eb11b12dce194eeca"), "user" : "bob", "score" : { "b" : 16 } }
공지 사항 우리는 사용자 bob
을 그는 배 a
점수와 1 배 b
점수를 가지고있다.
집계 쿼리를 작성하여 bob에 대한 일치 항목을 작성한 다음 점수를 합계 할 수 있습니다.
db.scores.aggregate([
{ $match: { user : "bob" } },
{ $group: { _id : "$user", sumA : { $sum : "$score.a" }, sumB : { $sum : "$score.b" } } },
{ $project: { user: 1, score : { $sum: [ "$sumA", "$sumB" ] } } }
]);
이 우리에게 전 해달라고 생각 다음과 같은 결과
{ "_id" : "bob", "score" : 38 }
을 줄 것이다 그래서 그것은 바로 방법이다. 내가 1ha 사용자라면 1 lakh 문서가 표시됩니다. 일치 검색어를 사용하여이를 제한 할 수 있습니까? –