MongoDB 3.2以降では、 $ filter コード>
これに効率的に演算子。 $ filter
内 の条件式では、 $ setIsSubset コード>
指定された値が配列にあるかどうかを確認する演算子。これは主に、 $in<を使用できないためです。 / code>
$ project
のクエリ演算子
ステージ。
db.collection.aggregate([
{ "$project": {
"list": {
"$filter": {
"input": "$list",
"as": "lst",
"cond": { "$setIsSubset": [ [ "$$lst.a" ], [ 1, 5 ] ] }
}
}
}}
])
MongoDB 3.0.x以降では、を使用した別の効率の悪いアプローチが必要です。 $ map
演算子と $ setDifference
オペレーター。
db.collection.aggregate([
{ "$project": {
"list": {
"$setDifference": [
{ "$map": {
"input": "$list",
"as": "lst",
"in": {
"$cond": [
{ "$setIsSubset": [ [ "$$lst.a" ], [ 1, 5 ] ] },
"$$lst",
false
]
}
}},
[false]
]
}
}}
])