MongoDB - 如何通过引用连接父产品和子产品

标签 mongodb mongodb-query

我的 mongo 系列存储产品。有两种产品类型:子产品和父产品。父产品持有其子产品的数组作为引用。

用例:

use mydb;

child1 = {
    _id: 1,
    name: "Child 1",
    is_child: true,
    is_parent: false,
    children : []
}

child2 = {
    _id: 2,
    name: "Child 2",
    is_child: true,
    is_parent: false,
    children : []
}

parent = {
    _id: 3,
    name: "Parent product",
    is_child: false,
    is_parent: true,
    children : [1, 2]
}

db.product.insert( [child1, child2, parent] );

我正在寻找返回的任何查询

{
    _id: 3,
    name: "Parent product",
    is_child: false,
    is_parent: true,
    children: [
        {
            _id: 1,
            name: "Child 1",
            is_child: true,
            is_parent: false,
            children : []
        },
        {
            _id: 2,
            name: "Child 2",
            is_child: true,
            is_parent: false,
            children : []
        }
    ] 
}

我是 mongodb 的新手,但我想使用 map-reduce 可以解决问题。任何人都可以建议吗?谢谢

最佳答案

您可以在 shell 中使用如下代码,尽管这不是很有效的方法。根据子文档的大小和嵌套级别,您应该考虑嵌入而不是链接。

query = {_id: 3}
db.product.find(query).map(function(doc) {
    doc.children = db.product.find({_id: {$in: doc.children}}).toArray();
    return doc;
})

关于MongoDB - 如何通过引用连接父产品和子产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19877367/

相关文章:

javascript - MongoDB:如何将此哈希添加到集合中的每个文档

mongodb - 如何检查子字段是否存在并且在mongodb聚合中不为空?

javascript - mongodb 模式中具有不同对象类型的数组

mongodb - 使用 Mongo 聚合查询按类型获取最新文档

mongodb - 如何将聚合结果写入数据库

mongodb - 聚合时如何不一一列出项目中的所有字段?

mongodb - 多边形重叠百分比

javascript - Mongodb 和 Espress : store a object in a model

mongodb - 以下关于 MongoDB 复制的说法正确的是?

MongoDb:根据条件将元素的属性投影到文档中的数组中