我有一个article_parent
这样的文档集合:
{ "name": "name1", "group": 1 }
{ "name": "name2", "group": 1 }
{ "name": "name3", "group": 2 }
{ "name": "name4", "group": 3 }
{ "name": "name5", "group": 2 }
我还有另一个收藏集,叫它article
存储我所有的帖子
{"parent_name": "name1", "value": "val1"}
{"parent_name": "name2", "value": "val2"}
{"parent_name": "name3", "value": "val3"}
{"parent_name": "name4", "value": "val4"}
{"parent_name": "name5", "value": "val5"}
我想得到所有这样article_parent.group
的2篇文章
{"parent_name": "name3", "value": "val3", parent: { "name": "name3", "group": 2 }}
{"parent_name": "name5", "value": "val5", parent: { "name": "name5", "group": 2 }}
我有这个查询:
db.article.aggregate([{
$lookup: {
from: "article_parent",
let: {
name: "$parent_name"
},
pipeline: [
{ $match: { group: 2 } }
],
as: "parent"}}
])
但查询找不到任何文章
我的查询错在哪里?
我能做什么?
谢谢
您尝试过的内容将不胜感激。您尝试使用uncorrelated-sub-queries。因此,当您在内部定义的管道中使用变量时let
,需要使用$ expr。您所做的问题是,您没有通过一个特定字段将两个集合都加入。
[
{
$lookup: {
from: "article_parent",
let: {
pname: "$parent_name"
},
pipeline: [
{
$match: {
$expr: {
$eq: [
"$name",
"$$pname"
]
},
group: 2
}
}
],
as: "parent"
}
},
{
$match: {
parent: {
$ne: []
}
}
}
]
工作蒙戈游乐场
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句