我正在使用$geoWithin
爲圓,我沒有得到預期的結果。有兩個收藏品,一個用於users
,另一個用於items
。我正在設置項目的半徑和座標。所以我必須在該座標和半徑內找到用戶。
用戶採集
{
"_id" : NumberLong(25287),
"_class" : "com.samepinch.domain.user.User",
"name":"XYZ",
"location" : [
74.866247,
31.63336
]
}
項收藏
{
"_id" : NumberLong(46603),
"itemName" : "Chandigarh",
"categoryName" : "TRAVELLING",
"location" : {
"_id" : null,
"longitude" : 77.15319738236303,
"latitude" : 28.434568229025803,
"radius" : 29153.88048637637
}
}
爲根據項目的座標和用戶座標,有大約兩個地在500公里的距離。
查詢
db.users.find({ location: { $geoWithin: { $center: [ [77.15319738236303,28.434568229025803], 29153.88048637637/3963.2] } } }).count()
據$ geoWithin,用戶應該無法顯示,但它顯示。如果我做錯了什麼,請幫助我。
謝謝
那麼我應該怎麼做,如果我想在一個太寬的半徑搜索? –
您正在搜索半徑約29.153英里=約46.917公里。因爲地球的半徑只有6.371km,邏輯上地球上的每個點都會滿足你的'$ geoWithin'條件。你應該考慮讓你的半徑更小。 – KoenVE