将小型解析 ID 迁移到普通 MongoDB 的对象 ID



我正在使用parse仪表板作为我的iOS应用程序的用户管理。此外,我正在使用使用mongoDB数据库的外部API。

我目前面临的问题是由Parse仪表板创建的用户具有小ID,而不是MongoDB的ObjectID,而其他未超过解析的资源则由普通Objectid生成。

例如。用户对象:

{
_id:"qVnyrGynJE",
user_name:"Aditya Raval"
}

文档对象:

{
_id:"507f191e810c19729de860ea",
doc_name:"Marksheet",
user:"qVnyrGynJE"
}

任务对象:

{
_id:"507f191e810c19729de860ea",
task_name:"Marksheet",
user:"qVnyrGynJE"
}

我也将keystone.js用作后端admin仪表板。因此,基本上,由于这种混合物的IDS关系,keystone.js内部的关系被损坏,keystone.js崩溃了。

因此,我想通过修复Keystone.js

将所有现有的小ID迁移到普通的MongoDB objectids或任何其他演练中,而不会分解任何其他演练。

您可以运行类似的东西:

var users = db.Users.find({});
for(var i = 0; i < users.length(); i++)
{
    var oldId = users[i]._id;
    delete users[i]._id;
    db.Users.insert(users[i], function(err, newUser) {
            db.Documents.updateMany({"user": oldId},{ $set: { "user": newUser._id }});
            //Do this for all collections that need to be update.
        });
    );
}
db.Users.deleteMany({_id: { $type: "string" }});

相关内容

  • 没有找到相关文章

最新更新