我有一个包含两个文档的测试集:

> db.test.find().pretty()
{ "_id" : ObjectId("510114b46c1a3a0f6e5dd7aa"), "a" : 1, "b" : 2 }
{ "_id" : ObjectId("510114c86c1a3a0f6e5dd7ab"), "a" : 3, "b" : 1 }

使用聚合框架,我只想得到a大于b的文档.

> db.test.aggregate([{"$match":{"$a":{"$gt":"$b"}}}])
{ "result" : [ ], "ok" : 1 } /* don't work*/

你有什么 idea 吗?

提前谢谢

顺致敬意,

推荐答案

嗯,在我这方面没有太多测试,我会说你可以用$cmp来做这个:

http://docs.mongodb.org/manual/reference/aggregation/cmp/#_S_cmp

db.test.aggregate([
    {$project: {
        // All your other fields here
        cmp_value: {$cmp: ['$a', '$b']}
    }},
    {$match: {cmp_value: {$gt: 0}}} 
])

也许有更好的方法,但我附近没有MongoDB安装可供测试.

Mongodb相关问答推荐

mongoose正在抛出Schema的错误has';t已在next.js中注册

在对象mongodb的数组中查找元素

无法配置数据源:未指定url属性,无法为 MongoDb 配置嵌入数据源

Mongo查找条件:不存在

对对象数组进行分组并在 mongodb 中获取计数

为什么一个 mongodb 副本集需要奇数个投票 node ?

解析命令行时出错:unrecognized option --rest

mongoose默认值等于其他值

我怎样才能排序空值在 mongodb 中是最后排序的?

Mongoid 有 Map/Reduce 吗?

MongoDB获取聚合查询的executionStats

使用 MongoDB 进行分页

用 BsonRepresentation(BsonType.ObjectId) vs BsonId vs ObjectId 在 C# 中装饰属性之间的区别

在 Nodejs 中找不到模块

如何在 MongoDB 聚合查询中使用 $hint?

使用 Jackson 与 Java Mongo DBObject 进行高效 POJO 映射

获取 mongodb 中所有唯一标签的列表

更新时提示Field name duplication not allowed with modifiers

无法使用命令写入模式错误,降级到兼容模式

mongoosefind()不返回结果