2014-01-18 60 views
0

MongoDB的IP地址我找蒙戈相當於這個SQL查詢:BETWEEN查詢

SELECT country 
FROM geoip 
WHERE 
2921648058 BETWEEN start AND end 

我的MongoDB的文檔看起來是這樣的:

{ 
     "_id" : ObjectId("52daefed0c78fc8c9085498d"), 
     "country" : "DE", 
     "end" : "16777471", 
     "start" : "16777216" 
} 

的數字是IP不會忽略轉換成int格式。不幸的是,所有關於這個的搜索都只提供了$ gt和$ lt操作符,在這種情況下這種操作符並沒有多大用處,因爲我不想檢索範圍內特定字段的文檔,只要文件本身符合搜索中給定的數字即可。
由於數據庫的大小很大,查看所有記錄並在腳本中評估結果不是一個選項。

+1

我讀過你的問題很多次,但我不明白,爲什麼你不能使用$ GT和$爲lt運營商。 「開始」必須低於您的價值,「結束」高於您的價值。我錯了嗎? – rubenfa

回答

6

$gte$lte運營商確實在這裏適用;你只需要使用不同的運營商startend

ip = 2921648058; 
db.geoip.find({'start': {'$lte': ip}, 'end': {'$gte': ip}})