比较同一子文档中 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]")
我有一个充满对象的数据库,这些对象看起来~完全像这样(为清楚起见进行了简化):
{
"_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]")