提问者:小点点

Mongoose. js:是否可以更改ObjectId的名称?


关于猫鼬mongoObjectId的一些问题

1)可以通过命名ObjectId字段不作为_id?以及如何做到这一点?当我在我的代码:

MySchema = new mongoose.Schema({
    id  : mongoose.Schema.ObjectId
});

它改变不了什么。

2)如果我有一个名为object tId的字段_id是否可以从请求中返回该字段的另一个名称(例如只是“id”-在Web响应中发送它);

3)问题只是为了理解:为什么ObjectId_id字段可以通过id属性访问而不是_id?

谢了亚历克斯


共1个答案

匿名用户

_id元素是mongoDB架构的一部分,它保证集合中的每个文档都可以唯一标识。如果您使用分片来允许跨不同机器的唯一标识符,这一点尤其重要。因此这是一种设计选择,因此没有办法驾驭它:)

_id的默认值生成如下:

  • 时间戳
  • 机器主机名的哈希
  • 生成过程的pid
  • 增量

但是你可以使用任何你想要的值,只要是唯一的。

如果你更容易考虑必须存在的东西的_id,但你真的不在乎:)只需让系统自动生成它并使用你自己的标识符。

因此,如果您仍然想创建自己的“id”,请执行如下操作:

db.mySchema.ensureIndex({"id": 1}, {"unique" : true})

但是要确保这是真正独特的,并且不会与你使用的API冲突。

2)在应用程序端重命名它,就在将其作为Web响应发送之前。

3)我认为这是因为你使用的API。也许作者发现返回id而不是_id更合乎逻辑?老实说,从未尝试过猫鼬:)