Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB深层嵌套聚合_Javascript_Mongodb_Mongoose_Aggregation Framework - Fatal编程技术网

Javascript MongoDB深层嵌套聚合

Javascript MongoDB深层嵌套聚合,javascript,mongodb,mongoose,aggregation-framework,Javascript,Mongodb,Mongoose,Aggregation Framework,tl;博士 我所拥有的: db.posts.find() 我想要达到的目标: { 1: {posts: 2, likes: 77, comments: 4}, 2: {posts: 1, likes: 33, comments: 4}, 3: {posts: 1, likes: 44, comments: 3}, 8: {posts: 0, likes: 0, comments: 1}, } 如您所见,authorId和CommentorID字段包含链接到另一个集合的Object

tl;博士

我所拥有的:

db.posts.find()

我想要达到的目标:

{ 
 1: {posts: 2, likes: 77, comments: 4}, 
 2: {posts: 1, likes: 33, comments: 4},
 3: {posts: 1, likes: 44, comments: 3},
 8: {posts: 0, likes: 0,  comments: 1},
}

如您所见,authorId和CommentorID字段包含链接到另一个集合的ObjectId键(比如“用户”)。任何用户都可以担任作者或评论员。即使用户并没有写任何帖子,他仍然需要被包括在聚合结果中。所有帖子中的评论数量都需要计算,而不仅仅是帖子,authorId等于评论员ID。

我想这是你想要的

db.posts.aggregate([
{$unwind:"$comments"},
{$group:{_id:"$authorId", 
"likes":{$addToSet:"$likes"}, "comments":{$addToSet:"$comments"}}},
{$project:{"likes":{$sum:"$likes"}, "posts":{$size:"$likes"}, "comments":{$size:"$comments"}}}
])

你的问题是什么???聚合问题这不是问题。到目前为止你做了什么?什么阻止了你?通过authorId字段执行{$group:{…}}我无法访问其他帖子的数据(其中包含该作者的评论编号)
db.posts.aggregate([
{$unwind:"$comments"},
{$group:{_id:"$authorId", 
"likes":{$addToSet:"$likes"}, "comments":{$addToSet:"$comments"}}},
{$project:{"likes":{$sum:"$likes"}, "posts":{$size:"$likes"}, "comments":{$size:"$comments"}}}
])