如何在mongodb中将一个集合的主ID设置为另一个集合的辅助ID?

时间:2019-07-16 04:30:53

标签: node.js mongodb mean-stack

我正在构建一个博客站点(使用尖角位于前面,节点位于后面,并使用mongoDB),在该站点中要显示与特定类别相对应的博客。

我对博客有3个不同的类别。我创建了两个集合:一个用于类别,另一个用于博客。在博客集合中,我想使用一个名为c_id的字段,该字段应等于类别集合的ID。因此,当我单击特定类别时,它仅显示该类别的博客。

1 个答案:

答案 0 :(得分:0)

在Blog收集架构中,您可以将字段定义为c_id或categoryId,如下所示:

var BlogSchema = new Schema({
        _id: {
            type: Schema.Types.ObjectId,
            required: true,
            auto: true,
        },
        blogTitle: {
           type: String
        },
        anyField: {
            type: String
        },
        categoryId: {
            type: Schema.Types.ObjectId,
            ref:"categories",              // Name of your category collection
            required: true,
        },
});

要获取所有博客以及类别名称,可以尝试如下查询:

db.collection.aggregate([
    {
       $lookup: {
            from: "categories",             // Name of the foreign collection
            let: { "cId": "$categoryId" },  
            pipeline:[
                { 
                  $match: { 
                       $expr: { 
                          $eq: ["$_id", "$$cId"] 
                       } 
                  } 
                },
                {
                   $project: {
                       categoryName: 1
                   }
                }  
            ],
           as: "categoryInfo"
       }
    }
])