📅  最后修改于: 2023-12-03 15:09:35.462000             🧑  作者: Mango
在使用 mongoose 进行数据库操作时,经常会涉及到操作 MongoDB 的 _id
字段。而 mongoose 中的 _id
也并不是一个普通的字符串,而是一个 ObjectId
类型。因此,如果需要将字符串或字符串数组转换为 mongoose 对象 id,需要对其进行相应的处理。
可以使用 mongoose.Types.ObjectId
的 createFromHexString()
方法将字符串转换为 ObjectId
对象。
const mongoose = require('mongoose');
const idString = '60bf142c59f87f8f900cbe9d';
const idObject = mongoose.Types.ObjectId.createFromHexString(idString);
console.log(idObject); // 输出 <ObjectId 60bf142c59f87f8f900cbe9d>
此方法适用于将单个字符串转换为 ObjectId
对象。
如果需要将字符串数组转换为 ObjectId
数组,可以使用数组的 map()
方法。
const mongoose = require('mongoose');
const idStringArray = ['60bf142c59f87f8f900cbe9d', '60bf142c59f87f8f900cbe9e'];
const ObjectIdArray = idStringArray.map(idString => mongoose.Types.ObjectId(idString));
console.log(ObjectIdArray); // 输出 [<ObjectId 60bf142c59f87f8f900cbe9d>, <ObjectId 60bf142c59f87f8f900cbe9e>]
此方法适用于将字符串数组转换为 ObjectId
数组。
如果需要将一个对象的字段转换为 ObjectId
类型,可以在定义 mongoose 的 schema 时,将字段类型设置为 Schema.Types.ObjectId
。
const mongoose = require('mongoose');
const personSchema = new mongoose.Schema({
firstName: { type: String, required: true },
lastName: { type: String, required: true },
address: {
street: { type: String },
city: { type: String },
state: { type: String },
zip: { type: String },
},
spouse: { type: Schema.Types.ObjectId, ref: 'Person' },
});
const Person = mongoose.model('Person', personSchema);
此方法适用于将一个对象中的某个字段转换为 ObjectId
类型。
以上便是将字符串或字符串数组转换为对象 mongoose 对象 id 的方法。