如何在mongoDB中用ObjectID _id替换手动ID?

时间:2017-12-20 18:43:08

标签: mongodb

假设我有一个包含两个集合,孩子和类的数据库。每个孩子属于一个班级。

每个类都有一个先前创建的整数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(); }
            });
        });
    });
  });

我错过了什么吗?感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

我们可以将integerId转换为Object id。

var ObjectId = require('mongodb').ObjectID;
let newClassId = ObjectId(class._id);

可能有更好或更好的方式我不知道,但这对我有用。