如何查找mongodb中数组中的字段
我要做的是,用文档替换id字段如何查找mongodb中数组中的字段,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我要做的是,用文档替换id字段 { "id": "1", "label" : "alex", "children" : [ { "id" : "rJqS8aW-W" }, { "id" : "SkF8UaW-W" } ], } { "label" : "felix", "id" : "rJqS8aW-W", "children"
{
"id": "1",
"label" : "alex",
"children" : [
{
"id" : "rJqS8aW-W"
},
{
"id" : "SkF8UaW-W"
}
],
}
{
"label" : "felix",
"id" : "rJqS8aW-W",
"children" : [
{
"id" : "S1gcBUT---"
},
{
"id" : "r1ltUUpZbb"
}
]
}
{
"label" : "tom",
"id" : "SkF8UaW-W",
"children" : [
{
"id" : "S1gcBUT---"
},
{
"id" : "r1ltUUpZbb"
}
]
}
....
为了能够做到这一点,我写道
{
"id": "1",
"label" : "alex",
"children" : [
{
"id" : "rJqS8aW-W"
},
{
"id" : "SkF8UaW-W"
}
],
details: [
{
"label" : "felix",
"id" : "rJqS8aW-W",
"children" : [
{
"id" : "S1gcBUT---"
},
{
"id" : "r1ltUUpZbb"
}
]
},
{
"label" : "tom",
"id" : "SkF8UaW-W",
"children" : [
{
"id" : "S1gcBUT---"
},
{
"id" : "r1ltUUpZbb"
}
]
}
]
}
...
但它并没有像我预期的那样回来。我们不能对数组使用$lookup
?我的意思是我想根据数组中的字段进行搜索
编辑:
一些修改,比如
db.collection.aggregate([
{$lookup: {from: "collection" , localField: "children.id", foreignField: "id", as: "details"}}
])
或
也会抛出错误
我该怎么办
flat
tingchildren
id字段,而不是$lookup
?如果您所要求的只是“替换”children,则在as
的参数中使用“children”
。我想得到children数组中包含的children的详细信息。对于alex,它包括两个孩子,felix和tom。但我看到的问题是,你正在“加入”与“对象图”中相同的集合$lookup
不会递归地执行此操作,如果您希望递归,您应该解释其目的,因为对于您想要执行的操作,可能有更好的解决方案。我的目的不清楚吗?我想获得子数组中文档的详细信息。你想让它“递归地加载”所有子数组。是的,这是可以理解的。我刚刚告诉过你那是不可能的。你明白吗?与此同时,我问你“你为什么需要这个?”如果这只是一个看到它发生的练习,那么它就不会起作用。如果你真的解释了你打算用这个“层次结构图”做什么,那么我们也许可以为你指出一个解决方案。但是,$lookup
并不能满足您的要求。
db.collection.aggregate([
{$lookup: {from: "collection" , localField: "$children.id", foreignField: "id", as: "details"}}
])
db.collection.aggregate([
{$lookup: {from: "collection" , localField: "children.$.id", foreignField: "id", as: "details"}}
])