MongoDB 스파 스 색인에 의심의 여지가 있습니다. "MongoDB 스파 스 색인 및 배열 : 색인이 너무 많은 문서
{
"a": "a-val",
"b": "b-val",
"meta": {
"urls": [ "url1", "url2" ... ],
"field1": "value1",
...
}
}
필드는"A "와"B "가 항상 제시하고 있지만 : 나는이 방법으로 하위 문서를 포함 할 수 약간의 문서와 모음 (게시물) (6K 가장 큰)가 meta.urls "는 존재하지 않을 수 있습니다!
지금, 나는 "meta.urls"값으로 하나의 문서를 삽입 한 후, 나는 나에게 "이상한"결과를 제공
db.post.ensureIndex({"a": 1, "b": 1, "meta.urls": 1}, {sparse: true});
후 통계를했다 : 인덱스가 97메가바이트에 관한 것입니다! 어떻게 가능합니까? "meta.urls"가 삽입 된 하나의 문서와 색인 크기는 97MB입니까?
그래서,이 방법 만 "meta.urls"인덱스를 만들려고 :
난 그냥 한 문서와 지금 "meta.urls_1"인덱스가db.post.ensureIndex({"meta.urls": 1}, {sparse: true});
. 그러나 나는 또 다른 '이상한'결과가이
db.post.find({"meta.urls": {$exists: true}}).hint("meta.urls_1").explain({verbose: true});
같은 간단한 쿼리를 설명하는 경우 : 몽고 5 문서를 스캔 왜
"n" : 1,
"nscannedObjects" : 5,
"nscanned" : 5,
, 인덱스에서뿐만 아니라 하나?
"meta.urls"에서 정확한 일치를 쿼리하면 단일 희소 색인이 올바르게 작동합니다. 당신이 사용할 수 있습니다
예 : db.post.find ({ "meta.urls": "URL1"}). 힌트 ("meta.old_slugs_1") // 1 문서 첫 번째 질문에 대한