在MongoDb聚合管道中,我经常遇到想要对成员字段的操作(即列表大小)进行过滤的情况。是否可以在一个操作中执行此操作,而不是先投影变量然后匹配?
这是我通常要做的:
[
{
"$project": {
"vector_size": { "$size": "$VectorField" }
}
},
{
"$match": {
"vector_size": { "$gte": 7 }
}
}
]
我希望一次性使用,例如:
[
{
"$match": {
"VectorField": { "$size": { "$gte": 7 } }
}
}
]
但是对于该操作,$size
需要一个整数,而不是另一个操作。
有可能吗?
答案 0 :(得分:1)
您可以在find
中使用one condition
db.getCollection('your-collection').find( {"$expr":{
"$gte":[
{"$size":'$VectorField'},
7
]
}})
注意:在3.6.5
的{{1}}中进行了测试