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