Mongodb Mongo中逻辑运算符顺序的混淆

Mongodb Mongo中逻辑运算符顺序的混淆,mongodb,Mongodb,我是Mongo DB的新手,在做一些练习时,我遇到了一个奇怪的问题。模式为: { "_id" : ObjectId("5c8eccc1caa187d17ca6ed29"), "city" : "CLEVELAND", "zip" : "35049", "loc" : { "y" : 33.9

我是Mongo DB的新手,在做一些练习时,我遇到了一个奇怪的问题。模式为:

{
    "_id" : ObjectId("5c8eccc1caa187d17ca6ed29"),
    "city" : "CLEVELAND",
    "zip" : "35049",
    "loc" : {
        "y" : 33.992106,
        "x" : 86.559355
    },
    "pop" : 2369,
    "state" : "AL"
} ...
我想找出人口超过5000但少于1000000的城市数量。 这两个查询,这是:

db.zips.find({“$nor”:[{“pop”:{“$lt”:5000},{“pop”:{“$gt”:“1000000”}]}).count()

这是:

db.zips.find({“$nor”:[{“pop”:{“$gt”:1000000},{“pop”:{“$lt”:“5000”}}]}).count()

给出不同的结果

第一个给11193,第二个给29470。由于我来自MySql的背景,这两个查询对我来说都没有什么不同。根据我的说法,两者都是相同的,应该返回人口少于1000000和超过5000的邮政编码。请帮我理解


提前感谢。

应使用$gte和$lte来比较相同的数据类型


第一个查询引用了“100000”,第二个查询引用了“5000”,这两个查询的结果不一样,因为您正在比较一个查询中的数字数据类型和另一个查询中的字符串。

$nor
一起使用的数组元素的顺序应该无关紧要。你确定你所看到的是可复制的吗?是的。我敢肯定。该数据可以在atlas的虚拟数据上进行测试。数据集:样本训练您的第一个查询引用“100000”,第二个查询引用“5000”,它们不一样。数值比较不应引用“”@SomeoneSpecial。砰的一声,现在它是正确的。请回答这个问题,我会把它标为正确的。这将在将来帮助他人