gpt4 book ai didi

javascript - Mongo $ 和选择器

转载 作者:可可西里 更新时间:2023-11-01 09:09:21 25 4
gpt4 key购买 nike

mongo $ 和选择器如何工作?我很难得到正确的结果。

假设我有一个这样的集合:

{ "_id" : "F7mdaZC2eBQDXA5wx", "quantity" : 5 }
{ "_id" : "F7mdaZC2eBQDXA5wx", "quantity" : 9 }
{ "_id" : "F7mdaZC2eBQDXA5wx", "quantity" : 34 }
{ "_id" : "F7mdaZC2eBQDXA5wx", "quantity" : 66 }

然后我运行查询:

var selectorMin = 9;
var selectorMax = 42;

ScrapReport.find({ $and: [ { quantity: { $gte: selectorMin }, quantity: { $lte: selectorMax } } ] })

我希望 mongo 只返回 9 和 34。但由于某种原因它也返回 5 和 66。

我的查询有什么问题?

最佳答案

您的查询将返回该示例中的所有文档,因为它首先查找 quantity >= 9 的文档即 9、34 和 66 AND 将该查询与 quantity <= 42 的文档组合在一起即 34、9 和 5。它不是在特定范围内查找文档,而是您的查询明确查找满足两个范围的所有文档,即

Documents which satisfy "quantity >= 9"
+
Documents which satisfy "quantity <= 42"

不是

Documents which satisfy "9 <= quantity <= 42"

只需将您的查询简化为

ScrapReport.find({ "quantity": { "$gte": selectorMin, "$lte": selectorMax } })

这样,您就可以为 MongoDB 指定一个范围来过滤您的文档,即

9 <= quantity <= 42

指定逗号分隔的表达式列表意味着隐含的 AND 运算并使用显式的 AND 与 $and operator when 当必须在多个表达式中指定相同的字段或运算符时。

关于javascript - Mongo $ 和选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35358863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com