(방문자)의 하위 객체에 사이트 사용 이벤트가 기록됩니다.MongoDB에서 Sub 객체를 쿼리하면 색인이 사용되지 않습니다.
{ "_id" : ObjectId("4d4c695794b332a0740009bd"), "evs" : [
{
"ev" : "Visit Home Page",
"d" : 1,
"s" : 1
},
{
"ev" : "Buy Product",
"d" : "110.10",
"upc" : 1234,
"s" : 1
},
{
"ev" : "Sign up to newsletter",
"d" : "1",
"s" : 1
}
]}
내가 'evs.s'에 인덱스를 가지고,하지만 난 evs.s에 검색 할 때 인덱스를 사용하지 : 여기에 데이터 구조의 기본 예입니다
db.visitors.find({'evs.s':0}).explain()
{
"cursor" : "BtreeCursor evs.s_1",
"nscanned" : 33361,
"nscannedObjects" : 33361,
"n" : 33361,
"millis" : 311,
"nYields" : 105,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"evs.s" : [
[
0,
0
]
]
}
}
이 쿼리는 311 밀리 초가 걸리고 모든 개체를 검색합니다. 여기
인덱스이다 db.visitors.getIndexes(){
"ns" : "tracking.visitors",
"unique" : false,
"key" : {
"evs.s" : 1
},
"name" : "evs.s_1",
"v" : 0
}
네, 그렇습니다. 10,000을 효율적으로 색인 생성하는 실제적인 방법은 없습니다. Limit를 사용하면 쿼리 속도가 빨라집니다. – Lerchmo