如何将 MongoDB 集合中的 _id 字段更改为 User_id?

Posted

技术标签:

【中文标题】如何将 MongoDB 集合中的 _id 字段更改为 User_id?【英文标题】:How can i change _id field in MongoDB Collection to User_id? 【发布时间】:2013-11-27 02:38:45 【问题描述】:

我是 MongoDB 数据库的新用户。在 MongoDb 中,无论插入到某个集合中,默认都会添加一个字段,即 _id 字段。

例如:

db.users.insert("User_id":"1","User_Name":"xxx","Address":"yyyy")
db.users.find()

显示

 "_id" : ObjectId("528475fc326b403f580d2eba"), "User_id" : "1", "User_Name" : "xxx",Address" : "yyyy" 

我不需要 _id 字段,我想用自动增量值将该 _id 字段替换为 User_id。 可能吗。请帮我。提前致谢。

【问题讨论】:

如果您觉得答案有帮助,您可以点赞/接受。 【参考方案1】:

_id 字段在 mongodb 中实际上是 special。这是您的主键,没有它您就无法拥有文档。即使您尝试在没有它的情况下插入文档,mongo 也会为您创建它(如您的示例中所示)。此外,您甚至不能为您的收藏修改_id 字段。

但是您可以使用自己的 _id 创建文档。所以如果你愿意,你可以db.users.insert("_id":"1","User_Name":"xxx","Address":"yyyy") \\why exactly 1 is a string?

记住_id 的意思是user_id,还要记住这个_id 应该是唯一的

请记住,mongodb 不像 sql。它没有自动增量键(我的意思是不是创作者不知道怎么做,只是你几乎可以不用它),但你可以创建类似于the same behaviour 的东西。

【讨论】:

很遗憾,有关创建自动增量密钥的指南链接已损坏。 create_index 函数呢?我可以将_id 设置为我想要的,但我似乎无法将_id 更改为student_id 真的没有办法吗? 这让我觉得是 Mongo 数据库的一个缺点【参考方案2】:

据我所知,您的问题是您想使用 mongoDB 内部 _id 作为自定义属性。例如,假设数据库包含用户身份并具有诸如“_id、名称、地址...”之类的属性,并且您希望在应用程序中将此 _id 的值用作 userId 以供外部参考。 因此,正如@SalvadorDali 所说,_id 字段在 mongoDB 中非常重要,没有它就没有文档。您所能做的就是让 db 通过它的默认 _id 存储值,但是您可以通过在 json 文件中应用这两个更改来使用自己的 User_id 访问外部。

"properties": 
    "userId":
      "type": "string",
      "id":"true",
      "index":"true",
      "description": "unique id of identity"
    

现在您存储任何唯一值,它使用默认 _id 存储在数据库中,并且您可以在 userId 字段中拥有该值。 如果我把你的问题弄错了,请纠正我。

【讨论】:

以上是关于如何将 MongoDB 集合中的 _id 字段更改为 User_id?的主要内容,如果未能解决你的问题,请参考以下文章

通过键字段查找 MongoDB 集合中的所有重复文档

求助啊,tp下,mongodb如何查询后只返回某个字段值

如何将每个数组字段与MongoDB中的其他字段匹配

MongoDB - 使用迭代更新集合上的每个“_id”字段

使用 mongoDB 中的聚合删除集合中所有文档的特定字段

MongoDB 更改/更新子文档字段