我和我的隊友都在使用mongodb 1.8.2。什麼會導致相同的查詢在相同的集合索引相同的方式返回不同的結果?
db.runCommand({geoNear: "places", near: [-46.65069190000003, -23.5633661],
maxDistance: 0.0006278449223041908, spherical: true,
distanceMultiplier: 6371.0 });
對4032個文檔以下集合:三分之二的環境中運行下面的地理空間索引的查詢時,都OK工作
{
"ns" : "places",
"count" : 4032,
"size" : 1645724,
"avgObjSize" : 408.1656746031746,
"storageSize" : 2785280,
"numExtents" : 4,
"nindexes" : 2,
"lastExtentSize" : 2097152,
"paddingFactor" : 1,
"flags" : 1,
"totalIndexSize" : 344064,
"indexSizes" : {
"_id_" : 180224,
"location_2d" : 163840
},
"ok" : 1
}
在兩個不同的MongoDB實例上運行它(一個OSX獅子,其他的Ubuntu 11.04服務器)結果集包含了100條記錄與以下執行統計:
"stats" : {
"time" : 0,
"btreelocs" : 522,
"nscanned" : 522,
"objectsLoaded" : 146,
"avgDistance" : 0.4824636947838318,
"maxDistance" : 0.00012637762666867466
},
(OK至今:查詢使用索引,你CA N乘B樹節點的量見行走)
但在(另一OS X的獅子)的環境中的一個的結果是顯着不同的(3代替100從其他機器)具有完全相同的數據集和索引:
"stats" : {
"time" : 0,
"btreelocs" : 45,
"nscanned" : 50,
"objectsLoaded" : 6,
"avgDistance" : 0.865580980499049,
"maxDistance" : 0.0001845858750423995
},
值得注意的是,查詢在此mongod實例中以不同方式運行。我想知道是哪些因素可以做到這一點
我試過至今:
- MongoDB的服務器和客戶端的版本是相同的(包括git的哈希)
- 據推測是怪異的數據庫已經被消滅了,從BSON轉儲恢復和重建索引
版本信息:
db version v1.8.2, pdfile version 4.5
Tue Aug 23 23:33:22 git version: 433bbaa14aaba6860da15bd4de8edf600f56501b
謝謝!但不幸的是我沒有機會在集合上運行這個命令,因爲我設法通過db.dropDatabase()正確地刪除數據庫。我最好的猜測是,它會指出造成查詢行爲的數據問題。我以前的擦拭嘗試不起作用的原因是因爲我刪除了相信mongod已關閉的文件(但是一旦我殺死它,它就會自動由Cellar啓動)。 –