如何在mongodb中创建逻辑运算符$或数组字段

时间:2014-11-28 08:19:08

标签: mongodb aggregation-framework

在MongoDB集合中,我在汇总后有一些数据:

{
   "_id" : ObjectId("5411e00c0d42e2a3688b47d3"),
   "found" : [false, false, false, false],
}

如果所有元素都设置为true,则true如果所有元素都设置为false,则false如果所有元素都为true,则可以获取db.test.aggregate( { $project: { found: { $or: "$found" } } }); // "result" : [ // { // "_id" : ObjectId("5411e00c0d42e2a3688b47d3"), // "found" : true // } // ], }?

我正在尝试这个,但它总是返回{{1}}:

{{1}}

P.S。我正在使用MongoDB 2.6

1 个答案:

答案 0 :(得分:1)

从版本2.6开始,您可以使用$anyElementTrue

db.test.aggregate({
   $project: {            
     like: { $anyElementTrue: ["$found"] }
   }
});

见:

http://docs.mongodb.org/manual/reference/operator/aggregation/anyElementTrue/#exp._S_anyElementTrue

如果您使用的是早期版本,那么我担心您必须使用map / reduce或$unwind -> $group组合。这样的事情:

db.test.aggregate([
  {
    $unwind: "found"
  },
  {
    $group: {
      _id: "_id",
      like: { $or: "found" }
    }
  }
]);