2017-10-03 77 views
10

Używam pulpitu Parse do zarządzania użytkownikami mojej aplikacji iOS. Również używam zewnętrznych interfejsów API, które używają bazy danych MongoDB.Migracja małych identyfikatorów parse do normalnych identyfikatorów obiektów MongoDB

Problem, który obecnie napotykam, polega na tym, że użytkownik utworzony w Parse Dashboard ma mały identyfikator zamiast identyfikatora obiektu MongoDB, a inne zasoby, które nie są analizowane, generowane są przez normalny ObjectID.

np. Obiekt użytkownika: Przedmiot

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

dokumentu:

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

Zadanie obiektu:

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

Jestem również za pomocą Keystone.js jako backend Admin Dashboard.So w zasadzie z powodu tego mieszanego rodzaju relacji ID wewnątrz K Plik eyStone.js jest uszkodzony i plik Keystone.js ulega awarii.

Więc chcę przenieść wszystkie moje istniejące małe identyfikatory do normalnego MongoDB ObjectIDs bez zerwania w związkach lub innych solucji ustalając Keystone.js

+1

ISN” Czy to tylko skrypt aktualizacyjny do migracji identyfikatorów? Coś jak https://stackoverflow.com/questions/4973095/mongodb-how-to-change-the-type-of-a-field – Veeram

+0

Jak można zmienić typ pola, który jest kluczem podstawowym w MongoDB ! –

+1

Możesz iterować po kolekcji, sprawdź id's type, gdy ciąg znaków usuwa identyfikator dokumentu i wstaw dokument. Po zakończeniu wstawiania nowych dokumentów można zbiorczo usunąć wszystkie dokumenty, których typ identyfikatora jest ciągiem znaków w celu usunięcia starych rekordów. ex tutaj https://stackoverflow.com/questions/4012855/how-update-the-id-of-one-mongodb-document – Veeram

Odpowiedz

1

można uruchomić coś takiego:

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" }});