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

Posted

技术标签:

【中文标题】如何找到field1大于field2的文档? (Nodejs/Mongoose/MongoDB)【英文标题】:How to find documents where field1 is greater than field2? ( Nodejs/Mongoose/MongoDB) 【发布时间】:2015-09-21 07:04:22 【问题描述】:

在执行查询时如何使用字段中的值进行比较?

来自文档的示例:

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】:

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

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

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

【讨论】:

我明白了,谢谢。但是如何使用查询生成器创建查询?我正在从动态设置创建多个查询,我尝试了这个没有运气: query.where(first+" 或者这个$where: "this.field1 > this.field2" 感谢你们,这解决了我的问题:query.where($where: "this."+first+" > this."+second);

以上是关于如何找到field1大于field2的文档? (Nodejs/Mongoose/MongoDB)的主要内容,如果未能解决你的问题,请参考以下文章

用文档中另一个字段的值更新字段[重复]

Oracle 查询 where field1=field2 and field2=field1

如何提高 COUNT(DISTINCT field1)... GROUP BY field2 的性能?

按 Field1 Field2 Field3 ASC 和 DESC 对查询结果进行排序

MYSQL ( field1, field2 ) = (x,y) vs field1= x AND field2 = Y 的区别

如何可视化类似图形的 json