2017-09-24 53 views
0

我絕對難住,不知道爲什麼會發生這種情況。 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() 

我得到absolutel沒有結果返回給我。爲什麼當「大於或等於」值變爲99時我什麼也沒有,因爲所有這些值都大於99.

這是否與最低的weekly_rent對象的值爲100有關?

這裏發生了什麼,爲什麼我的查詢不起作用?我很難過,無法找到任何有關這方面的信息。感謝您的回答。

回答

2

你的字段和搜索參數是字符串,所以你得到的是字典對比。正如"zz" > "daa",所以"99" > "300"。如果您想使用數字操作,您應該將這些值存儲爲數字。

+0

哦,你是對的,我在想什麼......非常感謝你的回答,它幫了我很大的忙! – Notorious