Mongodb 直接在字段的聚合上进行匹配/筛选

Mongodb 直接在字段的聚合上进行匹配/筛选,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,在MongoDb聚合管道中,我经常遇到需要对成员字段的操作(即列表的大小)进行过滤的情况。是否可以在一个操作中完成此操作,而不是先投影变量,然后进行匹配 这是我通常做的: [ { "$project": { "vector_size": { "$size": "$VectorField" } } }, { "$match": { "vector_size": { "$gte": 7 } } } ] 我更喜欢一次性的,比如:

在MongoDb聚合管道中,我经常遇到需要对成员字段的操作(即列表的大小)进行过滤的情况。是否可以在一个操作中完成此操作,而不是先投影变量,然后进行匹配

这是我通常做的:

[
  {
    "$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
中测试