2015-07-03 80 views
0

如何在執行查詢時使用字段值進行比較?從文檔如何查找field1大於field2的文檔? (Nodejs/Mongoose/MongoDB)

例子:

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); 

編輯:我動態地構建查詢,所以我需要在貓鼬中使用查詢生成器。

Edid2:多虧了下面的答案,這是我如何解決我的問題:

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

回答

1

請嘗試使用$下面的查詢WHERE操作:

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

PS:你可以找到$其中documnetation在以下鏈接: http://docs.mongodb.org/manual/reference/operator/query/where/

+0

我明白了,謝謝。但是,如何使用查詢構建器創建查詢? 我從動態設置創建多個查詢,我試過這個沒有運氣: query.where(first +「<」+ second); – eirik

+0

or this'$ where:「this.field1> this.field2」 – hassansin

+0

感謝你們兩位,這解決了我的問題: query.where({$ where:「this。」+ first +「> this。」 +第二}); – eirik