Javascript 当我保存时,Mongoose是否会自动为我创建唯一的ID?
我使用的简单代码如下:Javascript 当我保存时,Mongoose是否会自动为我创建唯一的ID?,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,我使用的简单代码如下: // mongoose helper methods const saveInstance = (name, schema, obj) => { const Model = mongoose.model(name, schema); const Instance = new Model(obj); return Instance.save(); }; 架构没有ID属性,但我在数据库中看到: "_id": { "$oid": "5c1
// mongoose helper methods
const saveInstance = (name, schema, obj) => {
const Model = mongoose.model(name, schema);
const Instance = new Model(obj);
return Instance.save();
};
架构没有ID属性,但我在数据库中看到:
"_id": {
"$oid": "5c14201afbf31900047f9ccf"
},
我想假设Mongoose创建了这个ID,还是MongoDB创建了这个ID?你能提供一份推荐信吗
还有,为什么对象中的对象语法奇怪,为什么不直接将ID作为\u ID
的值?MongoDB博客帖子:
默认情况下,MongoDB生成一个唯一的ObjectID标识符,该标识符在将新文档写入数据库之前分配给新文档中的_id字段
MongoDB博客帖子:
默认情况下,MongoDB生成一个唯一的ObjectID标识符,该标识符在将新文档写入数据库之前分配给新文档中的_id字段
实际上有两个问题,让我逐一回答
- =环绕
- (驱动程序)=连接到数据库的数据库客户端库
- =存储数据的数据库服务器,有两个版本:&
\u id
字段是在客户端生成的,不像某些数据库具有在数据库服务器上生成主字段的功能
实际上,Mongoose调用了MongoDB本机驱动程序提供的ObjectId
函数。这是在没有服务器的情况下完成的,即您可以在没有服务器连接的情况下生成ObjectId
。您可以尝试以下代码:
/* no any database connection logic */
const TestSchema = new mongoose.Schema() // blank schema, should contain only _id field
const Test = mongoose.model('Test', TestSchema)
const test = new Test()
console.log(test.toString()) // this will log an object with an _id field
\u ID
的值
这只是实际96位数据的字符串表示。这是一种用于将MongoDB文档表示为人类可读的格式。实际上有两个问题,让我逐一回答
- =环绕
- (驱动程序)=连接到数据库的数据库客户端库
- =存储数据的数据库服务器,有两个版本:&
\u id
字段是在客户端生成的,不像某些数据库具有在数据库服务器上生成主字段的功能
实际上,Mongoose调用了MongoDB本机驱动程序提供的ObjectId
函数。这是在没有服务器的情况下完成的,即您可以在没有服务器连接的情况下生成ObjectId
。您可以尝试以下代码:
/* no any database connection logic */
const TestSchema = new mongoose.Schema() // blank schema, should contain only _id field
const Test = mongoose.model('Test', TestSchema)
const test = new Test()
console.log(test.toString()) // this will log an object with an _id field
\u ID
的值
这只是实际96位数据的字符串表示。这是一种用于将MongoDB文档表示为人类可读的格式。这是否回答了您的问题?这正是您要查找的内容,请查看来自
user0800
的答案以了解更多详细信息。是的,大多数答案都是错误的,人们对此进行了评论,这就是为什么我提到阅读来自user0800
的答案,这是正确的/最新的&它确实为您提出的多个问题提供了大多数信息。这是否回答了您的问题?这正是您想要的答案,请查看user0800
的答案以了解更多详细信息。是的,大多数答案都是错误的,人们对此发表了评论,这就是为什么我提到阅读user0800
的答案,它是正确的/最新的,它确实为您提出的多个问题提供了大多数信息。谢谢。完美答案。你能提供MongoDB的官方参考资料吗?不是一篇博客。是的,读一下:你能把问题标记为已解决吗?谢谢。完美答案。你能提供MongoDB的官方参考资料吗?不是一篇博客。是的,读一下:你能把问题标记为已解决吗?