如何在MongoDB中的$ all运算符中添加顺序

时间:2016-10-24 10:13:58

标签: mongodb aggregation-framework

如何使用包含某些元素的数组从mongo获取文档,但是在同一订单中?

我知道$all完成工作但忽略了元素的顺序。我的情况下的顺序很重要,我无法对数组进行排序,因为它描述了我想保留顺序的路径。

111,222,333与222,111,333

不同

有没有办法在mongo聚合框架中使用$all或其他运算符?

1 个答案:

答案 0 :(得分:0)

你可以避免第一个“交叉”字段,只是为了让你回到MongoDB用这个命令做的调试。您应该动态创建$和运算符。

db.Test6.aggregate([
{ 
  $project: {
    _id:1,
    pages:1,
    intersect: {$setIntersection: [[111,666], "$pages"]},
    theCondition: {$let: {
      vars: {
      intersect: {$setIntersection: [[111,666], "$pages"]}
      },
      in: {
        $cond:[  {$and:[ 
                         {$eq:[{$arrayElemAt:["$$intersect", 0]}, 111]},
                         {$eq:[{$arrayElemAt:["$$intersect", 1]}, 666]}          
          ]} , true, false]
      }
     }
    }
  }
}
]);