代码之家  ›  专栏  ›  技术社区  ›  casparjespersen

直接在字段集合上匹配/过滤[重复]

  •  0
  • casparjespersen  · 技术社区  · 6 年前

    在MongoDb聚合管道中,我经常遇到想要对成员字段的操作(即列表大小)进行过滤的情况。有没有可能在一个操作中实现这一点,而不是先投影一个变量,然后进行匹配?

    我通常是这样做的:

    [
      {
        "$project": {
          "vector_size": { "$size": "$VectorField" }
        }
      },
      {
        "$match": {
          "vector_size": { "$gte": 7 }
        }
      }
    ]
    

    我更喜欢一次性的,比如:

    [
      {
        "$match": {
          "VectorField": { "$size": { "$gte": 7 } }
        }
      }
    ]
    

    但为了那次行动 $size 需要一个整数,而不是另一个操作。

    1 回复  |  直到 6 年前
        1
  •  1
  •   IftekharDani    6 年前

    find 在里面 one condition

    db.getCollection('your-collection').find( {"$expr":{
       "$gte":[
         {"$size":'$VectorField'},
         7
       ]
     }})
    

    3.6.5 mongo GUI