我願意在此集合中應用$ filter以僅在數組中獲得「應用數學」結果。我正在以這種[「應用數學」]的形式向下面的集合提供輸入。
{
"_id" : ObjectId("58a95d81eead32e82932b535"),
"univisorEducation" : [
{
"educationLevel" : "BACHELOR",
"courseType" : "UNDERGRADUATE",
"year" : 2016,
"college" : ObjectId("58a936add48f2b502858a70d"),
"_id" : ObjectId("58a95eb2eead32e82932b541"),
"course" : [
"Anthropology",
"Biomedical Engineering",
"Applied Mathematics"
]
}
]
}
{
"_id" : ObjectId("58a9643deead32e82932b54b"),
"univisorEducation" : [
{
"educationLevel" : "DOCTORATE",
"courseType" : "GRADUATE",
"year" : 2020,
"college" : ObjectId("58a936afd48f2b502858b5e2"),
"_id" : ObjectId("58a96495eead32e82932b550"),
"course" : [
"Applied Mathematics",
"Applied Physics"
]
},
{
"educationLevel" : "MASTER",
"courseType" : "GRADUATE",
"year" : 2020,
"college" : ObjectId("58a936afd48f2b502858b9f7"),
"_id" : ObjectId("58a96495eead32e82932b54f"),
"course" : [
"Applied Mathematics"
]
}
]
}
爲此我使用在$項目$過濾器,下面是我的$過濾器的代碼
$filter: {
input: "$univisorEducation",
as: "univisorEducation",
cond: {
$setIsSubset: ["$$univisorEducation.course", courses]
}
}
問題是,我只是得到這個結果
{ "_id" : ObjectId("58a95d81eead32e82932b535"), "univisorEducation" : [ ] }
{
"_id" : ObjectId("58a9643deead32e82932b54b"),
"univisorEducation" : [
{
"educationLevel" : "MASTER",
"courseType" : "GRADUATE",
"year" : 2020,
"college" : ObjectId("58a936afd48f2b502858b9f7"),
"_id" : ObjectId("58a96495eead32e82932b54f"),
"course" : [
"Applied Mathematics"
]
}
]
}
的與「_id」集合:ObjectId(「58a95d81eead32e82932b535」)應該有應用數學的結果。
你想做什麼?子集操作不對稱。你的預期產出是多少? – Veeram
我想要的是根據陣列輸入值過濾陣列字段數據 –
您的問題是什麼?您使用第一個查詢得到預期的結果。爲什麼期望第二個查詢在完全不同的查詢時返回相同的結果? – Veeram