【问题标题】:How to find documents where field1 is greater than field2? ( Nodejs/Mongoose/MongoDB)如何找到field1大于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});

【问题讨论】:

    标签: node.js mongodb mongoose nosql


    【解决方案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});
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2014-03-19
    • 1970-01-01
    • 2014-02-04
    • 2022-01-05
    • 2016-12-28
    • 1970-01-01
    相关资源
    最近更新 更多