我有以下的BSON:
[
{
arr: [
{
age: 24
},
{
age: 55
}
]
},
{
arr: [
{
age: 12
},
{
age: 14
},
{
age: 17
}
]
},
{
arr: [
{
age: 11
},
{
age: 13
},
{
age: 20
}
]
}
]
我使用以下查询:
db.collection.find({
"arr": {
$elemMatch: {
age: {
$lt: 15
}
}
}
},
{
"arr.$": 1
})
结果是:
[
{
"_id": ObjectId("5a934e000102030405000001"),
"arr": [
{
"age": 12
}
]
},
{
"_id": ObjectId("5a934e000102030405000002"),
"arr": [
{
"age": 11
}
]
}
]
我的挑战是,如果每个arr数组中的所有元素都小于15,则返回它们,而不是当其中一个元素小于15时返回.因此,在本例中,我的预期答案是一个空数组,因为并不是每个数组的所有元素都具有小于15的年龄值.
我不确定在这种情况下是否需要使用$elemMatch
.如果有其他办法,请让我知道.我只想得到作为查询结果的解决方案,而不是在后处理上进行JavaScript操作.
顺便说一句,我用https://mongoplayground.net/来判断数据集.