我有一個MongoDB集合的模式,其中字段被動態地添加到文檔中。當我使用動態添加的字段搜索文檔時,查詢速度非常慢。 樣本文件看起來象下面這樣:在MongoDB中動態添加的字段上創建索引
{
"_id" : ObjectId("4657439ad7f616df3f49"),
"name" : "test1",
"created_at" : ISODate("2014-06-13T10:48:41.501Z"),
"Status" : "NEW",
"email":"[email protected]",
"rank":1278
}
字段名稱,電子郵件,等級動態用戶創建並添加到文檔中。 查詢任何這些領域需要很長時間才能做出迴應。由於自然和字段本身是動態添加的,因此在這些字段上不會創建索引。 我試圖.explain(),這裏是輸出:
{
"cursor" : "BasicCursor",
"isMultiKey" : false,
"n" : 1,
"nscannedObjects" : 1683063,
"nscanned" : 1683063,
"nscannedObjectsAllPlans" : 1683063,
"nscannedAllPlans" : 1683063,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 4,
"nChunkSkips" : 0,
"millis" : 1708,
"indexBounds" : {
}
這清楚地表明,有需要做索引。但我不知道如何在這些非確定性領域創建索引。 注*:文件沒有嵌入文件,如here所述。我是MongoDB的新手。
如果直到它被動態添加時未知,那麼如何添加已提交的「名稱」的索引? – Astro
好吧...如果您正在尋找自動化功能,並且用戶可以添加任何字段,那麼您可以在對正在搜索的每個字段運行查詢之前確保索引。在第一次之後,ensureIndex命令不起作用,並且重複無害。當然,這可能導致帶有N個索引的集合。這是一種折衷。 – amenadiel