3

我的 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 可以解决这个问题。任何人都可以建议吗?谢谢

4

1 回答 1

5

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

query = {_id: 3}
db.product.find(query).map(function(doc) {
    doc.children = db.product.find({_id: {$in: doc.children}}).toArray();
    return doc;
})
于 2013-11-09T15:52:01.457 回答