我的 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/