考慮一個集合中的數據結構如下:
{
_id : ObjectId("4ec6c015482c4c8302000001"),
uid : ObjectId("4ec6c015482c4c8302003233") //reference to user's Object ID
someValue : some json object,
}
所述收集將在UID分片。
在這兩種情況下,哪種讀取方式更有效?
選項A)
引用存儲到每個數據結構中的用戶對象,並執行該查詢:
db.collection.find({_id: {$in: ids}}
選項B)
上創建流體的索引和查詢是這樣的:
db.collection.find({uid : ObjectId("4ec6c015482c4c8302003233")})
每個結果集都會包含0-20個數據結構從收集。
概括:它會更快找到()20點特定的ID或匹配索引ID值的所有對象(結果集也是20)
_id具有一個自動創建的索引,除非集合被上限,否則您不能刪除該索引。 –