假設我的結構爲;
{
"class" : "TESTCLASS",
"id" : "HyvF1sdZl",
"depends" : [
"S11T5ce",
"BytQLN6ml",
"Byzz8Ea7l",
"r1TUNX58x"
],
"list" : [
{
"class" : "DATA",
"id" : "H113d5Pwx"
},
{
"class" : "DATA",
"id" : "H113d5Pwx"
},
{
"class" : "TEST",
"id" : "r1TUNX58x"
},
{
"class" : "DATA",
"id" : "H113d5Pwx"
},
{
"class" : "TEST",
"id" : "r1TUNX58x"
},
{
"class" : "TEST",
"id" : "r1TUNX58x"
},
{
"class" : "FDSAFAS",
"id" : "S11T5ce"
},
{
"class" : "YENITEST",
"id" : "r1TUNX58x"
},
{
"class" : "FDSAFAS",
"id" : "S11T5ce"
},
{
"class" : "CALENDAR",
"id" : "S11T5ce"
},
{
"class" : "EN",
"id" : "BytQLN6ml"
},
{
"class" : "CALENDAR",
"id" : "S11T5ce"
},
{
"class" : "EN_",
"id" : "Byzz8Ea7l"
},
{
"class" : "TEST",
"id" : "r1TUNX58x"
},
{
"class" : "EN",
"id" : "BytQLN6ml"
},
{
"class" : "FDSAFAS",
"id" : "S11T5ce"
}
]
}
我想project
list
項目,其id
的都包括在depends
陣列。
我的意思是,我只想得到;
"depends" : [
"S11T5ce",
"BytQLN6ml",
"Byzz8Ea7l",
"r1TUNX58x"
],
"list" : [
{
"class" : "FDSAFAS",
"id" : "S11T5ce"
},
{
"class" : "EN",
"id" : "BytQLN6ml"
},
{
"class" : "EN_",
"id" : "Byzz8Ea7l"
},
{
"class" : "TEST",
"id" : "r1TUNX58x"
}
]
爲了能夠做到這一點,我寫了;
db.definition.aggregate([
{
$project: {
_id: 0,
depends :1,
depends: {$in: ["$list.id"]},
"list.defid": 1,
"list.class" :1,
}
}
]).pretty()
但是,這將引發我缺少的是一個錯誤"errmsg" : "Expression $in takes exactly 2 arguments. 1 were passed in."
?
在MongoDB 3.4中,您應該使用['$ in'](https://docs.mongodb。com/manual/reference/operator/aggregation/in /)聚合運算符而不是'$ setIsSubset' – styvane
@ M.StyvaneSoukossi確實!感謝指針 – chridam