는 좀 집계 마법을 완료 한 후 다음과 같은 데이터 집합을 가지고 :
{ "_id" : "5700edfe03fcdb000347bebb", "comment" : { "commentor" : "56f3f70d4de8c74a69d1d5e1", "id" : ObjectId("570175e6c002e46edb922aa1")}, "max" : ObjectId("570175e6c002e46edb922aa3")}
{ "_id" : "5700edfe03fcdb000347bebb", "comment" : { "commentor" : "56f3f70d4de8c74a69d1d5e6", "id" : ObjectId("570175e6c002e46edb922aa2")}, "max" : ObjectId("570175e6c002e46edb922aa3")}
{ "_id" : "5700edfe03fcdb000347bebb", "comment" : { "commentor" : "56f3f70d4de8c74a69d1d5e1", "id" : ObjectId("570175e6c002e46edb922aa3")}, "max" : ObjectId("570175e6c002e46edb922aa3")}
_id는 게시물을 나타내고 게시물, 댓글이 있습니다. 이 경우 3 가지 의견이 있습니다. 2와 동일한 commentor ("56f3f70d4de8c74a69d1d5e1"
)와 다른 commentor ("56f3f70d4de8c74a69d1d5e6"
).
댓글 작성자 ("56f3f70d4de8c74a69d1d5e1"
) 만 모든 고유 댓글을 집계하는 집계 쿼리를 작성하고 게시자 "5700edfe03fcdb000347bebb"
에 댓글 작성자가 두 번 댓글을 달았 음을 반환하고 싶습니다.
{ "$group" : { "_id" : "$_id", "count" : { "$sum" : "$comment.commentor" } } }
결과가 있었다 :
{ "_id" : "5700edfe03fcdb000347bebb", "count" : 0 }
내가 해당 게시물의 모든 commentors에 의해 모든 의견을 계산하는 것을 시도하고 있지 않다 있습니다
나는 다음과 같은 시도 그래서 나는 이것을하려고하지 않고있다 :{ "$group" : { "_id" : "$_id", "count" : { "$sum" : 1 } } }
sult 지역 :
{ "_id" : "5700edfe03fcdb000347bebb", "count" : 3 }
난 그냥 사용자가 게시물의 수를 원하는 ("56f3f70d4de8c74a69d1d5e1"
)
편집 :이
은 몇 가지 조사 후, 나는 $ 합계는 숫자 필드와하지에 작동하는지 참조 숫자가 아닌 필드 : https://docs.mongodb.com/manual/reference/operator/aggregation/sum/#grp._S_sum
게시물() 당 사용자 ("56f3f70d4de8c74a69d1d5e1"
)가 게시 한 댓글 수를 얻을 수있는 방법이 있습니까?
그것은 모음 내에서 중복'_id' 필드를 가질 수 없습니다. 또한 당신은 당신의 결과가 어떻게 보일지 결코 말하지 않았습니다. ' – styvane
어쩌면 내가 분명하게해야하지만 처음에는 데이터 집합이 실제로 집계 후에 _id가 중복 된 것처럼 보이는 이유입니다. – Simon
초기 데이터를 표시 할 수 있습니까? 아마도 당신이 원하는 것을 할 수있는 더 좋은 방법이있을 것입니다. – styvane