mongodb找到哪个字段低于另一个字段加上参数值

时间:2017-04-09 12:25:11

标签: node.js mongodb

我在mongodb中有以下集合,我们称之为"产品":

[
  {
    "name"           : "Product X",
    "warehouseStock" : 50,
    "reservedStock"  : 41
  },
  {
    "name"           : "Product Y",
    "warehouseStock" : 50,
    "reservedStock"  : 10
  }
]

我希望有一个find()查询返回此集合中的文档&仓库' warehouseStock'小于(' reservedStock' + threshold),其中threshold是传递给find()查询的参数。

我正在尝试在节点中执行以下find()查询:

var threshold = 10;
mongo.getDb().collection('products').find({warehouseStock: {$lt:(threshold+'$reservedStock')}})

但这似乎不起作用。我知道我可以做到以下几点:

mongo.getDb().collection('products').find({warehouseStock: {$lt:threshold}})

但是如何查询

warehouseStock < (reservedStock + threshold)

所以,如果阈值是= 10,那么我只会得到上面集合示例中的两个项目中的第一个。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用$where

var threshold = 10;
mongo.getDb().collection('products').find({
    "$where": "this.warehouseStock < (this.reservedStock + " + threshold + ")"
}).toArray(function(err, items) {
    console.log(items);
});