繁体   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