[英]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.