如何找到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 的区别