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

Compare values inside same subdocument for findOne() [MongoDB]

我有一个充满对象的数据库,这些对象看起来~完全像这样(为清楚起见进行了简化):

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

我想做的是为 MongoJS 创建一个查询文档(或者 MongoDB,我可以找出其余部分),寻找 priceHistory[0] <价格历史[1].

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

任何帮助将不胜感激,我已经用尽了我的 Google-foo。

编辑:

我想要 return 一组指示自我们上次扫描(每天执行)以来价格下降的记录。基本上来自我无法控制的数据源的一组 "sale" 项。

您可以使用 $where 子句,但要小心——它很慢,它不能使用您的索引,并且会执行完整的 table 扫描。传递您想用于比较的任何 Javascript:

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

此外,如果您只查询 $where 语句,则可以跳过该语句:

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