MongoDB 查询 (两个字段差值作为条件查询)

pmjhonwang
  • 45

字段

  • name string
  • x int
  • y int

表记录

name x y
jhon 1 2
lily 2 1
gan 3 2

查询结果

查询所有 x > y 的所有 name

回复
阅读 11.7k
2 个回答
db.collections.find({'$where': "this.x > this.y"}, {'name': 1})
pmjhonwang
  • 45

这样还能按照x y 的差值排序

db.collection.aggregate(
    [  
      {
        $project : {
           _id: '$name',
           val: { $subtract : [ "$x", "$y" ] },
           x: '$x',
           y: '$y'
        }
      },
      {$match: {val: {$gt: 0}}},
      {$sort: { val: -1 }}
   ]
)
宣传栏