1
자주 사용하는 검색어에 대한 복합 색인을 만들려고합니다.Mongo 복합 색인 사용
두 개의 필드가 있습니다. IP 주소를 포함하는 String 유형의 '클라이언트'필드. 다른 하나는 Date 유형의 'sendOn'필드입니다. 나는 클라이언트가 null이고 sendOn이 특정 범위 사이에있는 문서를 찾고있다.
> db.queries.ensureIndex({"client":1,"sendOn":1})
> db.queries.find({ $query: { client: { $exists: false } , sendOn: { $gt: new Date(1387664033883), $lt: new Date(1387750493883) } } }).explain()
{
"cursor" : "BasicCursor",
"nscanned" : 2546133,
"nscannedObjects" : 2546133,
"n" : 0,
"millis" : 25071,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
}
}
문서가 있다고
가 sendOn 필드에 정렬 오름차순을 지원하기 위해, 나는 내가 그래서 1의 값을 가진 sendOn 인덱스를 필요가 설립 한, 나는
를 실행했습니다 $ exists 쿼리는 일반적으로 비효율적입니다. 필자는 문서에 적어도 하나 이상의 빈 클라이언트 필드가 포함되어야한다고 생각했습니다. 그러나 해당 쿼리는 인덱스를 사용하지 않습니다.
이 시도
http://docs.mongodb.org/manual/reference/operator/meta/query/
: 문서는 당신이 $ 쿼리 형식() .explain 사용해서는 안 상태 null 바로 가기 주셔서 감사합니다. 친숙한 것을 가지고있는 것이 좋습니다. – EthernetCable