比较findOne()[MongoDB]的同一子文档中的值

时间:2015-10-07 02:25:58

标签: node.js mongodb mongojs

我有一个充满对象的数据库,看起来很像这样(为了清晰起见,简化了):

{
    "_id": "GIFT100",
    "price": 100,
    "priceHistory": [
        100, 110
    ],
    "update": 1444183299242
}

我要做的是为MongoJS创建一个查询文档(或MongoDB,我可以找出其余部分),查找 priceHistory [0]< priceHistory [1]

我希望我的查询文档能够返回上面的记录。或者,我可以更改我的文档代码以比较 price< priceHistory [0] 但我相信这仍会导致同样的问题(比较同一文档中的值)。

任何帮助都会受到赞赏,我已经用尽了谷歌。

修改

我想返回一组记录,表明自上次扫描(每天执行)后价格下降。基本上是我无法控制的数据源中的一组“销售”项目。

1 个答案:

答案 0 :(得分:1)

您可以使用$where子句,但要小心 - 它很慢,它无法使用您的索引,它将执行全表扫描。传递您想要用于比较的任何Javascript:

db.collection.findOne({$where: "priceHistory[0] < priceHistory[1]"})

此外,您可以跳过$where语句,如果这是您唯一要查询的内容:

db.collection.findOne("priceHistory[0] < priceHistory[1]")