如何找到field1大于field2的文档? (Nodejs / Mongoose / MongoDB)

时间:2015-07-03 12:22:47

标签: node.js mongodb mongoose nosql

在执行查询时如何使用来自字段的值?

docs中的示例:

db.inventory.find( { qty: { $gt: 20 } } )

如何使用文档中的字段值而不是20,如下所示:

db.inventory.find( { qty: { $gt: field2 } } )

这就是我想要实现的目标:

var query = model.find();

var first = "field1";
var second = "field2";

query.where(first).gt(second);

编辑:我正在动态构建查询,所以我需要在mongoose中使用查询构建器。

Edid2:感谢下面的回答,这就是我解决问题的方法:

query.where({$where: "this."+first+" > this."+second});

1 个答案:

答案 0 :(得分:1)

请使用$ WHERE运算符尝试以下查询:

 db.inventory.find({$where: function() { 
  return ( this.field1 >   this.field2 ); } });

P.S:您可以在下面的链接中找到$ Where documnetation:     http://docs.mongodb.org/manual/reference/operator/query/where/