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

一些关于mongoose中的mongo ObjectId的问题

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

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

它没有改变。

2)如果我有objectId字段调用_id是否有可能从请求返回此字段的另一个名称(例如只是“ID” – 发送在networking响应);

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

谢谢,Alex

“_id”元素是mongodb体系结构的一部分,它保证集合中的每个文档都能被唯一标识。 如果您使用分片在不同的机器上允许唯一标识符,这一点尤其重要。 因此,这是一个deviseselect,所以没有办法得到它:)

_id的默认值生成如下:

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

但是你可以随意使用任何你想要的值。

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

所以,如果你仍然想创build自己的“ID”执行这样的事情:

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

但要确保它是唯一的,并且不会与您使用的API冲突。

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

3)我认为这是因为你使用的API。 也许作者发现它更合乎逻辑地返回id而不是_id? 老实说从来没有试过mongoose:)