현재 데이터베이스를 Mongo 2.4.9에서 2.6.4로 마이그레이션 중입니다.MongoDB - 2.6에서 작동하지 않는 쿼리
나는 2.4에서 좋은 결과를주는 쿼리가 2.6의 문서를 반환하지 않는 이상한 상황이 있습니다.
문제의 쿼리
var dbSearch = {
created: { $gte: new Date(1409815194808) },
geolocation: {
$geoWithin: {
$center: [ [ 4.895167900000001, 52.3702157 ], 0.1125 ]
}
}
};
해당 모음에있는 다음 (관련) 인덱스 :
: 몽고 2.6에 대해이 쿼리를 실행{ "v" : 1, "key" : { "created" : -1 }, "name" : "createdIndex", "ns" : "prod.search", "background" : true }
{ "v" : 1, "key" : { "geolocation" : "2d", "created" : -1 }, "name" : "geolocationCreatedIndex", "ns" : "prod.search" }
쿼리가 로그 다음을 제공합니다
{ created: { $gte: new Date(1409815194808) }, geolocation: { $geoWithin: { $center: [ [ 4.895167900000001, 52.3702157 ], 0.1125 ] } } }
planSummary: IXSCAN { created: -1 } ntoreturn:0 ntoskip:0 keyUpdates:0 numYields:0 locks(micros) r:8196 nreturned:0 reslen:20 8ms
node-mongodb-native mo를 사용하여 NodeJS를 사용하여 데이터베이스에이 쿼리를 실행하려고합니다. 노새.
검색 필드 (created
또는 geolocation
) 중 하나를 제거하면 쿼리가 2.4 및 2.6에서 올바른 결과를 생성합니다.
> db.search.find({created: { $gte: new Date(1409815194808) }, geolocation: {$geoWithin: {$center: [ [ 4.895167900000001, 52.3702157 ], 0.1125 ] } } }).explain()
{
"cursor" : "GeoBrowse-circle",
"isMultiKey" : false,
"n" : 321,
"nscannedObjects" : 321,
"nscanned" : 321,
"nscannedObjectsAllPlans" : 321,
"nscannedAllPlans" : 321,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 0,
"nChunkSkips" : 0,
"millis" : 69,
"indexBounds" : {
"geolocation" : [ ]
},
"lookedAt" : NumberLong(8940),
"matchesPerfd" : NumberLong(8538),
"objectsLoaded" : NumberLong(8538),
"pointsLoaded" : NumberLong(0),
"pointsSavedForYield" : NumberLong(0),
"pointsChangedOnYield" : NumberLong(0),
"pointsRemovedOnYield" : NumberLong(0),
"server" : "ubmongo24.local:27017"
}
: 조합 (위의 게시 등) 추가로 2.6
편집에 아무런 결과가 몽고에 2.4 쿼리 설명 정보
를 요구되지 제공
최신 노드 몽고 드라이버가 있습니까? – joao
2.4 및 2.6에 대한 설명을하고 결과를 질문에 추가 할 수 있습니까? 참고로, 2.6의 복합 지리 색인에 대한 공개 문제가 있습니다 (https://jira.mongodb.org/browse/SERVER-14264). 귀하의보고 결과와 동일 –
@ AdamComerford 설명 정보를 게시물에 추가했습니다. 추천 한 항목이 관련성이있는 것으로 보입니다. – Whyhankee