0
我有一個CSV〜我在MongoDB中已導入IP和國家代碼(從https://db-ip.com)的600K記錄的結構如下:通常MongoDB比較I.P.地址
{
addr_type: "ipv4",
ip_start: "176.74.160.0",
ip_end: "176.74.179.207",
country: "GB"
}
在SQL,我會救「ip_start 「和‘ip_end’的列VARBINARY(16),然後我可以運行此查詢:
select * from `{$table_name}` where addr_type = ? and ip_start <= ? order by ip_start desc limit 1
MongoDB中沒有VARBINARY類型,我試圖把它們插入字符串,但它並沒有回到正確的值:
var country bson.M
ip := "85.134.123.13"
Db := db.MgoDb{}
Db.Init()
c := Db.C("dbip")
if err := c.Find(bson.M{"addr_type": "ipv4", "ip_start": bson.M{"$lte": ip}}).Select(bson.M{"country":1, "_id":0}).Sort("ip_start").One(&country); err != nil {
log.Printf(err.Error())
}
Db.Close()
任何想法如何比較I.P.與MongoDB一樣,從上面的SQL例子?
謝謝你的回答,這是否也適用於IPv6?因爲我將IPv4和IPv6存儲在我的數據庫中。 –
我在這裏用你說的一個例子,但它打印0. https://play.golang.org/p/KJSMJlUdV- –
我更新了我的答案,實際上沒有運行我輸入的代碼。請參閱https://play.golang.org/p/O7SHmIuwCw –