[英]Effect mongodb _id generation on Indexing
我正在使用MonoDB作為數據庫.......
我將為該用戶使用useId和FolderID的每個文檔生成一個_id
這里的userId對於每個用戶都是不同的,並且每個用戶都有不同的FolderIds
我生成_id為
userId="user1"
folderId="Folder1"
_id = userId+folderId
這個id生成對mongoDB索引有什么影響...它將像MongoDB生成的_id一樣快速地工作
更好的解決方案是保留_id列不變 ,並在文檔中具有單獨的userId和folderId字段,或者創建將它們結合在一起的單獨字段。
至於它是否“快”……取決於您的查詢,但是例如對於按文檔“創建”日期進行排序,您將失去僅按_id進行排序的能力,也將失去收益分片和分發 。
但是,如果您想將這兩個ID都用於_id ,則還有另一種選擇...
您實際上可以同時使用兩者,但是將它們分開 ...例如,這是有效的_id :
> var doc = { "_id" : { "userID" : 12345, "folderID" : 5152 },
"field1" : "test", "field2" : "foo" };
> db.crazy.save(doc);
> db.crazy.findOne();
{
"_id" : {
"userID" : 12345,
"folderID" : 5152
},
"field1" : "test",
"field2" : "foo"
}
>
沒關系-一個可以預見的問題是,您將失去從MongoID撤消日期/時間戳的功能。 為什么不只是在文檔中添加另一個ID對象呢? 您只丟失了幾個字節,也沒有使用內置的索引系統。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.