乐闻世界logo
搜索文章和话题

How to set _id to db document in Mongoose?

1 个月前提问
23 天前修改
浏览次数5

1个答案

1

在Mongoose中,每个模型的文档默认都会有一个_id属性,这个_id通常是自动生成的MongoDB ObjectId。MongoDB ObjectId是一个12字节的字段,通常包含时间戳、随机值和递增计数器,用于确保每个_id的唯一性。

然而,我们有时候可能会有特殊的需求,比如需要将_id设置为特定的值或者使用不同类型的数据(比如字符串或数字)。在Mongoose中,你可以在定义Schema时自定义_id的类型和值。

以下是一个如何在Mongoose中自定义_id的例子:

javascript
const mongoose = require('mongoose'); const Schema = mongoose.Schema; // 定义一个新的Schema,其中_id字段被定义为String类型 const customIdSchema = new Schema({ _id: { type: String, required: true }, name: String, age: Number }); // 创建模型 const User = mongoose.model('User', customIdSchema); // 创建一个新的文档实例,将_id设置为自定义的字符串 const newUser = new User({ _id: 'custom-id-12345', name: '张三', age: 30 }); // 保存到数据库 newUser.save() .then(doc => { console.log('文档保存成功', doc); }) .catch(err => { console.error('保存文档时出错', err); });

在这个例子中,我们定义了一个名为User的模型,其_id字段被明确设置为String类型。当创建newUser实例时,我们手动指定了_id'custom-id-12345'。这样在保存文档时,MongoDB将使用这个自定义的ID而不是自动生成一个ObjectId。

这种方法可以让你根据业务需求自定义ID,例如使用用户的邮箱地址或其他业务标识符作为文档的唯一标识。但需要注意,手动设置_id时必须确保其唯一性,避免插入重复的_id导致错误。

2024年8月12日 10:56 回复

你的答案