在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
答案 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" }
}
}
]);