Indexing mongodb_id生成对索引的影响
我使用MonoDB作为数据库 我将为每个文档生成一个_id 我为该用户使用useId和FolderID 这里的userId对于每个用户都是不同的,并且每个用户都有不同的folderid 我生成_id作为Indexing mongodb_id生成对索引的影响,indexing,mongodb,Indexing,Mongodb,我使用MonoDB作为数据库 我将为每个文档生成一个_id 我为该用户使用useId和FolderID 这里的userId对于每个用户都是不同的,并且每个用户都有不同的folderid 我生成_id作为 userId="user1" folderId="Folder1" _id = userId+folderId 此id生成对mongoDB索引是否有任何影响。。。 它会像MongoDB生成的id一样快速工作吗?应该没问题-一个可预见的问题是,您将失去从MongoID中反转日期/时间戳的能力。
userId="user1"
folderId="Folder1"
_id = userId+folderId
此id生成对mongoDB索引是否有任何影响。。。
它会像MongoDB生成的id一样快速工作吗?应该没问题-一个可预见的问题是,您将失去从MongoID中反转日期/时间戳的能力。为什么不在文档中添加另一个ID对象呢?您只丢失了几个字节,并且没有破坏内置的索引系统。应该没问题-一个可预见的问题是,您将失去从MongoID中反转日期/时间戳的能力。为什么不在文档中添加另一个ID对象呢?您只丢失了几个字节,并且没有使用内置的索引系统。更好的解决方案是保持\u id列的原样,在文档中有单独的userId和folderId字段,或者创建一个单独的字段,将两者结合使用 至于它是否会“一样快”。。。取决于您的查询,但对于按文档的“创建”日期排序,例如,您将失去仅按\u id排序的功能,您也将失去以下好处: 但是,如果您想对您的\u ID同时使用这两个ID,还有一个选项 实际上,您可以同时使用这两种方法,但请将它们分开。。。例如,这是一个有效的\u 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"
}
>
更好的解决方案是保留\u id列的原样,在文档中单独设置userId和folderId字段,或者创建一个单独的字段,将这两个字段合并在一起 至于它是否会“一样快”。。。取决于您的查询,但对于按文档的“创建”日期排序,例如,您将失去仅按\u id排序的功能,您也将失去以下好处: 但是,如果您想对您的\u ID同时使用这两个ID,还有一个选项 实际上,您可以同时使用这两种方法,但请将它们分开。。。例如,这是一个有效的\u 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"
}
>
您应该确保键的顺序始终相同,否则_id将不同。{“userID”:12345,“folderID”:5152}与bson中的{“folderID”:5152,“userID”:12345}不同。您应该确保键的顺序始终相同,否则_id将不同。{“userID”:12345,“folderID”:5152}与bson中的{“folderID”:5152,“userID”:12345}不同。