MongoDB过滤数学计算文档

时间:2014-04-04 07:12:08

标签: mongodb aggregation-framework

我最近被问到这个问题:如果我在集合中有一个文档,如{a:1,b:2},如何过滤a / b> = 0.5的所有文档?这是我的解决方案。

1 个答案:

答案 0 :(得分:2)

假设我有一个集合"数据"以下格式 - 以下示例文档:

{ "_id" : ObjectId("533e46e99710181b60737702"), "a" : 65, "b" : 25.3 }
{ "_id" : ObjectId("533e46e99710181b60737703"), "a" : 39.1, "b" : 66 }
{ "_id" : ObjectId("533e46e99710181b60737704"), "a" : 31.7, "b" : 96.3 }
{ "_id" : ObjectId("533e46e99710181b60737705"), "a" : 48.6, "b" : 75.1 }
{ "_id" : ObjectId("533e46e99710181b60737706"), "a" : 20.8, "b" : 97.3 }

以下是查询:

> db.data.aggregate([ { $project: { t: { $divide: [ "$a", "$b" ] } } }, 
                      { $match: { t: { $gt: 20} } } ])
{
    "result" : [
        {
            "_id" : ObjectId("533e46e99710181b6073770d"),
            "t" : 40.75
        },
    ],
    "ok" : 1
}