aggregation
と簡単です。あなたが$setIntersection
で$size
を使用する必要があり、その後、少なくとも交差配列内の2つの数値要素を持つすべての文書を一致:find
で
db.C.aggregate([
{
$project: {
numbers: 1,
intersectedNumbers: {
$size: {
$setIntersection: ['$numbers', [5,15,25,35]]
}
}
}
},
{
$match: {
'intersectedNumbers': {
$gte: 2
}
}
}
])
を使用すると、上記のaggregation
のように2つの段階を必要とするので、それがより問題だし、そうではありませんfind
で可能です。 しかし、あなたが行うことができ、A
配列が動的である場合、「少なくとも2」のすべての要素possibiltesを返し、その後、find
を使用する$or
と$all
を使用する関数を作成することです:
db.C.find({
$or: [
{numbers: {$all: [5,15]}},
{numbers: {$all: [5,25]}},
{numbers: {$all: [5,35]}},
{numbers: {$all: [15,25]}},
{numbers: {$all: [15,35]}},
{numbers: {$all: [25,35]}}
]
})