Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB选择_id字段类型的最佳实践_Mongodb - Fatal编程技术网

MongoDB选择_id字段类型的最佳实践

MongoDB选择_id字段类型的最佳实践,mongodb,Mongodb,我将要编写一个基于Node.js和MongoDB的webapp。此webapp将用户存储在用户表中。我的问题很简单:因为用户名是唯一的,所以将_id字段类型从ObjectId更改为包含用户名的字符串是一个好主意吗 我认为这会更方便,并且会以某种方式减少执行多个任务所需的请求数量。通常,如果我使用用户名作为_id,那么在其他表中对用户的引用将直接为我提供用户名,而不是在显示之前需要转换为可理解名称的ObjectId 此外,拥有两个不同的字段(ObjectId作为_id+username)需要两个索

我将要编写一个基于Node.js和MongoDB的webapp。此webapp将用户存储在用户表中。我的问题很简单:因为用户名是唯一的,所以将_id字段类型从ObjectId更改为包含用户名的字符串是一个好主意吗

我认为这会更方便,并且会以某种方式减少执行多个任务所需的请求数量。通常,如果我使用用户名作为_id,那么在其他表中对用户的引用将直接为我提供用户名,而不是在显示之前需要转换为可理解名称的ObjectId

此外,拥有两个不同的字段(ObjectId作为_id+username)需要两个索引来加快对id或用户名的查找,并且需要数据库中更多的空间

最后,如果我理解正确,在分片环境中,MongoDB只能确保_id字段的唯一性

但是,我可能会错过一些我以后会意识到(并深深后悔)的事情

你能解释一下吗


谢谢

你可能想参考这个,谢谢你的反馈@chridam!我想知道的是,MongoDB处理ObjectId的设计可能比处理任何其他对象类型都好。如果没有,我想我会选择用户名作为ID。