簡體   English   中英

影響mongodb _id生成對索引的影響

[英]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不變 ,並在文檔中具有單獨的userIdfolderId字段,或者創建將它們結合在一起的單獨字段。

至於它是否“快”……取決於您的查詢,但是例如對於按文檔“創建”日期進行排序,您將失去僅按_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM