是否可以在mongodb中表达以下SQL查询:
SELECT * FROM table AS t WHERE t.field1 > t.filed2;
修改 总结一下:。
答案 0 :(得分:17)
您可以使用$where执行此操作:
db.coll.find( { $where: "this.field1 > this.field2" } );
<强>可是:强>
Javascript的执行速度比 原生运营商,但它非常灵活
如果使用@yi_H建议的方式,性能是一个更好的问题。
答案 1 :(得分:15)
您可以将文档field1 - field2
存储为field3
,然后搜索{ field3: { $gt: 0 } }
也可以通过mapreduce获得匹配的文档。
答案 2 :(得分:3)
您可以使用$ where。请注意,它会相当慢(必须在每条记录上执行Javascript代码),所以如果可以,请与索引查询结合使用。
db.T.find( { $where: function() { return this.Grade1 > this.Grade2 } } );
或更紧凑:
db.T.find( { $where : "this.Grade1 > this.Grade2" } );