MongoDB在数学计算上过滤文档

问题描述:

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

假设我有以下格式的集合 “数据” - 下面的示例文件:

{ "_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 
}