我绝对难过,不知道为什么会这样。在MongoDB中,我有一个简单的集合如下:
{
"_id" : ObjectId("59bf7291d58e7c23182465f0"),
"weekly_rent" : "299",
"__v" : 0
}
{
"_id" : ObjectId("59bf8264d58e7c23182465f1"),
"weekly_rent" : "199",
"__v" : 0
}
{
"_id" : ObjectId("59bf9fe4d58e7c23182465f2"),
"weekly_rent" : "899",
"__v" : 0
}
{
"_id" : ObjectId("59c4e3316d55c10430d4ab16"),
"weekly_rent" : "150",
"__v" : 0
}
{
"_id" : ObjectId("59c4e3726d55c10430d4ab17"),
"weekly_rent" : "120",
"__v" : 0
}
{
"_id" : ObjectId("59c4e3aa6d55c10430d4ab18"),
"weekly_rent" : "190",
"__v" : 0
}
{
"_id" : ObjectId("59c4e3e76d55c10430d4ab19"),
"weekly_rent" : "230",
"__v" : 0
}
{
"_id" : ObjectId("59c4e42f6d55c10430d4ab1a"),
"weekly_rent" : "100",
"__v" : 0
}
{
"_id" : ObjectId("59c4e4616d55c10430d4ab1b"),
"weekly_rent" : "400",
"__v" : 0
}
当我使用:
执行搜索时db.listings.find({weekly_rent: { $gte: "100", $lte: "300" }}).pretty()
我使用包含weekly_rents的对象获得预期结果:100,230,190,120,150,199,299
但是当我使用:
执行搜索时db.listings.find({weekly_rent: { $gte: "99", $lte: "300" }}).pretty()
我绝对没有回复给我的结果。当大于或等于"大于或等于"为什么我什么也得不到值已更改为99,因为所有这些值都大于99。
这是否与值为100的最低weekly_rent对象有关?
这里发生了什么,为什么我的查询不起作用?我很难过,无法找到任何相关信息。感谢您的回答。
答案 0 :(得分:2)
您的字段和搜索参数是字符串,因此您需要进行字典比较。就像"zz" > "daa"
一样,"99" > "300"
。如果要使用数字运算,则应将这些值存储为数字。