小编mat*_*fin的帖子

将另一个集合中的相关项包含到结果集中

TLDR

如何使用MongoDB聚合来包含来自另一个通过一对多关系链接的集合中的相关文档?

本质上,我想要做的是能够获取问题列表并包括与该问题相关的所有标志.

更新(2016年11月11日):解决了下面发布的解决方案.

更新(05/07/2016):我已经设法通过使用组合$unwind, $lookup, $project等来获得带有相关标志的问题列表.更新的查询如下.

问题(05/07/2016):我只能获取具有嵌套标志的问题.即使他们没有任何标志,我也想获取所有问题.

我有两个集合,一个用于内容,一个用于内容标志,如下所示:

内容的架构(问题集)

{
    "_id" : ObjectId("..."),
    "slug" : "a-sample-title",
    "content" : "Some content.",
    "title" : "A Sample Title.",
    "kind" : "Question",
    "updated" : ISODate("2016-06-08T08:54:26.104Z"),
    "isPublished" : true,
    "isFeatured" : false,
    "flags" : [ 
        ObjectId("<id_of_flag_one>"), 
        ObjectId("<id_of_flag_two>")
    ],
    "answers" : [ 
        ObjectId("..."), 
        ObjectId("...")
    ],
    "related" : [],
    "isAnswered" : true,
    "__v" : 4
}
Run Code Online (Sandbox Code Playgroud)

标志的shcema(标志集合)

{
    "_id" : ObjectId("..."),
    "flaggedBy" : ObjectId("<a_users_id>"),
    "type" : "like", …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

4
推荐指数
1
解决办法
2227
查看次数