将小型解析 ID 迁移到正常 MongoDB 的 ObjectID
Migration of Small Parse IDs to normal MongoDB's ObjectIDs
我正在使用 Parse Dashboard 来管理我的 iOS Application.Also,我正在使用使用 MongoDB 数据库的外部 API。
我目前面临的问题是从 Parse Dashboard 创建的用户具有较小的 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 作为后端管理员 Dashboard.So 主要是因为 KeyStone.js 内部的这种混合 ID 关系被破坏并且 Keystone.js 崩溃了。
所以我想将所有现有的小 ID 迁移到正常的 MongoDB ObjectID,而不会破坏关系或通过修复 Keystone.js
进行任何其他演练
你可以运行像这样:
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" }});
我正在使用 Parse Dashboard 来管理我的 iOS Application.Also,我正在使用使用 MongoDB 数据库的外部 API。
我目前面临的问题是从 Parse Dashboard 创建的用户具有较小的 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 作为后端管理员 Dashboard.So 主要是因为 KeyStone.js 内部的这种混合 ID 关系被破坏并且 Keystone.js 崩溃了。
所以我想将所有现有的小 ID 迁移到正常的 MongoDB ObjectID,而不会破坏关系或通过修复 Keystone.js
进行任何其他演练你可以运行像这样:
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" }});