关于mongoose中的mongo ObjectId的一些问题
1)可以将ObjectId字段命名为_id吗?怎么做?当我在我的代码中时:
MySchema = new mongoose.Schema({
id : mongoose.Schema.ObjectId
});
它什么都没改变。
2)如果我有一个名为_id的objectId字段,则可以从请求中返回该字段的另一个名称(例如只是“id” - 在Web响应中发送它);
3)并且只是为了理解的问题:为什么ObjectId _id字段可以通过“id”属性访问而不是“_id”?
谢谢,Alex
答案 0 :(得分:2)
“_id”元素是mongodb体系结构的一部分,它保证了集合中的每个文档都可以被唯一标识。如果您使用分片在不同的机器上允许唯一标识符,这一点尤为重要。因此,这是一个设计选择,因此无法驾驭它:)
_id的默认值生成如下:
但你可以使用你想要的任何值,只要它是唯一的。
如果您更容易想到必须存在的事物的_id,但您真的不关心:)只需让系统自动生成它并使用您自己的标识符。
所以,如果您仍想创建自己的“id”,请执行以下操作:
db.mySchema.ensureIndex({"id": 1}, {"unique" : true})
但请确保它非常独特,并且与您使用的API不冲突。
2)在应用程序端重命名,就在将其作为Web响应发送之前。
3)我认为这是因为您使用的API。也许作者发现返回id而不是_id更合乎逻辑?老实说从来没有尝试过猫鼬:)。