假设我有一个包含两个集合,孩子和类的数据库。每个孩子属于一个班级。
每个类都有一个先前创建的整数id。
我想将class.class_id替换为类的(ObjectID)_id,而不是类的(整数)id。
但是,当我运行下面的脚本时,它不会使用class._id重置class_id - 它仍然是旧的整数id。
mongoose.connect(someMongodbUri, { useMongoClient: true }, (err, db) => {
let kidsCount = 0;
db.collection('kids').find({}).each((err, kid) => {
kidsCount++;
db.collection('classes')
.findOne({ id: kid.class_id })
.then((class, err) => {
let newClassId = class._id;
db.collection('kids').updateOne(
{ _id: kid._id },
{ $set: { class_id: newClassId } }
).then(() => {
console.info('Updated', kid.class_id);
kidsCount--;
if (kidsCount === 0) { db.close(); }
});
});
});
});
我错过了什么吗?感谢您提供的任何帮助!
答案 0 :(得分:0)
我们可以将integerId转换为Object id。
var ObjectId = require('mongodb').ObjectID;
let newClassId = ObjectId(class._id);
可能有更好或更好的方式我不知道,但这对我有用。