Indexing mongodb_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中反转日期/时间戳的能力。

我使用MonoDB作为数据库

我将为每个文档生成一个_id 我为该用户使用useId和FolderID

这里的userId对于每个用户都是不同的,并且每个用户都有不同的folderid

我生成_id作为

userId="user1"
folderId="Folder1"

_id = userId+folderId
此id生成对mongoDB索引是否有任何影响。。。
它会像MongoDB生成的id一样快速工作吗?应该没问题-一个可预见的问题是,您将失去从MongoID中反转日期/时间戳的能力。为什么不在文档中添加另一个ID对象呢?您只丢失了几个字节,并且没有破坏内置的索引系统。

应该没问题-一个可预见的问题是,您将失去从MongoID中反转日期/时间戳的能力。为什么不在文档中添加另一个ID对象呢?您只丢失了几个字节,并且没有使用内置的索引系统。

更好的解决方案是保持\u id列的原样,在文档中有单独的userIdfolderId字段,或者创建一个单独的字段,将两者结合使用

至于它是否会“一样快”。。。取决于您的查询,但对于按文档的“创建”日期排序,例如,您将失去仅按\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列的原样,在文档中单独设置userIdfolderId字段,或者创建一个单独的字段,将这两个字段合并在一起

至于它是否会“一样快”。。。取决于您的查询,但对于按文档的“创建”日期排序,例如,您将失去仅按\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}不同。