我的文檔GradePovider子文檔,包含元素:貓鼬發現所有滿足條件
{
"_id": ObjectId("568a466f2c48409006ab4862"),
"values": [
{
"_id": ObjectId("568a466f2c48409006ab4868"),
"description": "has et delicata moderatius"
},
{
"_id": ObjectId("568a466f2c48409006ab4867"),
"description": "description two"
},
{
"_id": ObjectId("fakeId"),
"description": "description three"
}
]
}
而且我想這樣做的value._id列表的搜索。 使得我得到在由[的ObjectId( 「568a466f2c48409006ab4868」),的ObjectId( 「568a466f2c48409006ab4867」)]的搜索的響應:
{
"_id": ObjectId("568a466f2c48409006ab4862"),
"values": [
{
"_id": ObjectId("568a466f2c48409006ab4868"),
"description": "has et delicata moderatius"
},
{
"_id": ObjectId("568a466f2c48409006ab4867"),
"description": "description two"
}
]
}
我使用此代碼的嘗試:
gradeModel.GradeProvider.find({
'values._id': {
$in: node.grades
}
}, {
"values.$": true
}, function (err, gradeProviders) {}
此代碼返回只有第一次匹配的值,對於每個gradeProvider。 我想我需要使用這個聚合。到目前爲止,我沒有做到這一點。
radeModel.GradeProvider.aggregate([{
$match: {
'values._id': {
$in: node.grades
}
}
}, {
$project: {
providerName: 1,
values: 1
}
}], function (err, gradeProviders) {}
此代碼返回正確的GradesProviders,但它返回所有的值。
謝謝!
謝謝你的回答。 –
@marouaneRaji是否解決了你的問題? – chridam
是的,我只有一個點 「$ setIsSubset」: [ 「$$ el._id」], node.grades ] 沒有爲兩個相同的ObjectId(但不是同一個實例)返回true。 任何想法如何管理這種情況? 除了在ObjectId的數組上應用toString嗎? –