以下SQL查询在mongodb中是否可行:
SELECT * FROM table AS t WHERE t.field1 > t.filed2;
编辑: 总结如下:
- 使用存储“field1-field2”的第三个字段几乎是完美的,但需要一些额外的维护。
- $where将在JavaScript中加载和评估,并且不会使用任何索引。对于大数据不好。
- map/reduce有相同的问题,即使我们只需要一个记录,也会遍历所有记录。
以下SQL查询在mongodb中是否可行:
SELECT * FROM table AS t WHERE t.field1 > t.filed2;
编辑: 总结如下:
你可以使用 $where 来实现:
db.coll.find( { $where: "this.field1 > this.field2" } );
但是:
JavaScript的执行速度比本地运算符要慢,但它非常灵活。
如果性能是一个问题,最好按照@yi_H建议的方式进行。
field1 - field2
存储为field3
,然后搜索{ field3: { $gt: 0 } }
。同时也可以使用mapreduce来获取匹配的文档。db.T.find( { $where: function() { return this.Grade1 > this.Grade2 } } );
db.T.find( { $where : "this.Grade1 > this.Grade2" } );