Mongodb 直接在字段的聚合上进行匹配/筛选
在MongoDb聚合管道中,我经常遇到需要对成员字段的操作(即列表的大小)进行过滤的情况。是否可以在一个操作中完成此操作,而不是先投影变量,然后进行匹配 这是我通常做的:Mongodb 直接在字段的聚合上进行匹配/筛选,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,在MongoDb聚合管道中,我经常遇到需要对成员字段的操作(即列表的大小)进行过滤的情况。是否可以在一个操作中完成此操作,而不是先投影变量,然后进行匹配 这是我通常做的: [ { "$project": { "vector_size": { "$size": "$VectorField" } } }, { "$match": { "vector_size": { "$gte": 7 } } } ] 我更喜欢一次性的,比如:
[
{
"$project": {
"vector_size": { "$size": "$VectorField" }
}
},
{
"$match": {
"vector_size": { "$gte": 7 }
}
}
]
我更喜欢一次性的,比如:
[
{
"$match": {
"VectorField": { "$size": { "$gte": 7 } }
}
}
]
但是对于该操作,$size
需要一个整数,而不是另一个操作。
有可能吗?您可以在
一个条件中使用查找
db.getCollection('your-collection').find( {"$expr":{
"$gte":[
{"$size":'$VectorField'},
7
]
}})
注意:在mongo GUI上的3.6.5
中测试