Миграция небольших идентификаторов парсинга в обычные идентификационные объекты MongoDB
Я использую Parse Dashboard для управления пользователями моего приложения iOS. Также я использую внешние API, которые используют базу данных MongoDB.
В настоящее время проблема заключается в том, что пользователь, созданный из Parse Dashboard, имеет небольшой идентификатор вместо ObjectID объекта MongoDB, а другие ресурсы, которые не являются синтаксическим выражением, генерируются обычным ObjectID.
например. Пользовательский объект:
{
_id:"qVnyrGynJE",
user_name:"Aditya Raval"
}
Объект документа:
{
_id:"507f191e810c19729de860ea",
doc_name:"Marksheet",
user:"qVnyrGynJE"
}
Объект задачи:
{
_id:"507f191e810c19729de860ea",
task_name:"Marksheet",
user:"qVnyrGynJE"
}
Я также использую Keystone.js в качестве панели Backend Admin Dashboard. Поэтому в основном из-за этого смешанного типа отношений ID внутри KeyStone.js ломается, и Keystone.js получает сбой.
Итак, я хочу перенести все мои существующие небольшие ID в обычные объекты ObjectIDs MongoDB, не нарушая связей или любого другого пошагового руководства, установив Keystone.js
Ответы
Ответ 1
Вы можете запустить что-то вроде этого:
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" }});