我有一个充满对象的数据库,看起来很像这样(为了清晰起见,简化了):
{
"_id": "GIFT100",
"price": 100,
"priceHistory": [
100, 110
],
"update": 1444183299242
}
我要做的是为MongoJS创建一个查询文档(或MongoDB,我可以找出其余部分),查找 priceHistory [0]< priceHistory [1]
我希望我的查询文档能够返回上面的记录。或者,我可以更改我的文档代码以比较 price< priceHistory [0] 但我相信这仍会导致同样的问题(比较同一文档中的值)。
任何帮助都会受到赞赏,我已经用尽了谷歌。
修改
我想返回一组记录,表明自上次扫描(每天执行)后价格下降。基本上是我无法控制的数据源中的一组“销售”项目。
答案 0 :(得分:1)
您可以使用$where子句,但要小心 - 它很慢,它无法使用您的索引,它将执行全表扫描。传递您想要用于比较的任何Javascript:
db.collection.findOne({$where: "priceHistory[0] < priceHistory[1]"})
此外,您可以跳过$where
语句,如果这是您唯一要查询的内容:
db.collection.findOne("priceHistory[0] < priceHistory[1]")