【问题标题】:Mongo project test if value is in arrayMongo项目测试值是否在数组中
【发布时间】:2017-01-24 22:02:46
【问题描述】:

在 mongo 聚合的项目步骤中,我想创建一个布尔字段,例如:

{
  $project: {
    isInArray: { $cond: [
      { $in: ['$_id', ids] },
      { $const: true },
      { $const: false },
    ] },
  },
},

但这失败了

 invalid operator $in

我找不到有关正确语法的文档

【问题讨论】:

    标签: mongodb aggregation-framework contains projection


    【解决方案1】:

    你可以使用$setIsSubset操作符

    db.people.aggregate([
     { $project: {
        isInArray: { $cond: [ {$setIsSubset: [['$_id'], ids]}, true, false ] }
     }}
    ])
    

    【讨论】:

    • 您知道是否存在性能下降,例如 _id 中的索引可能不会被此使用吗?
    • @Guig afaik 聚合只能将索引用于 $match 操作,如果它先行
    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多