2016-07-07 46 views
0

Ich versuche, Daten von Parse zu einem neuen Projekt zu migrieren, das Mongo als seine Datenbank verwendet (ohne Parse/Parse Server). Da die Schemas zwischen den beiden Projekten unterschiedlich sind, schreibe ich manuell ein Migrationsskript, um dies zu erreichen.Konvertieren von Parse objectId in Mongo ObjectId?

Wie ich es verstehe, scheint Parse 10 Zeichen lange IDs für ihre Objekte (Kombinationen von Ziffern, Kleinbuchstaben und Großbuchstaben) zu verwenden, während Mongo 24 Zeichen lange IDs verwendet (12 Bytes als Hex dargestellt).

Wenn ich jetzt Daten für ein Dokument vom alten Projekt in das neue migriere, benutze ich eine Funktion, die die Parse-ID in eine eindeutige Mongo ObjectId konvertiert (sie konvertiert jedes Zeichen in einen zweistelligen Hexadezimalwert) , puffert dann die 20-stellige Zeichenfolge mit 4 Nullen).

Ist das ein guter Ansatz? Ich vermeide es, die automatische ObjectId-Generierung von Mongo zu verwenden, falls ich jemals eines der alten Parse-Dokumente erneut migrieren und das passende Dokument in der neuen Datenbank finden muss. Ich weiß, dass automatisch generierte ObjectIds in Mongo auch einige andere Informationen wie Erstellungsdaten einbetten, aber ich denke nicht, dass dies wichtig wäre, und ich kann einfach meinen benutzerdefinierten ObjectId-Generator verwenden. Ich bin mir jedoch nicht sicher über die Auswirkungen auf die Leistung/wenn ich diese Migration nur falsch mache.

Antwort

1

Der Ansatz, den ich empfehle, ist, dass Mongo automatisch die IDs erzeugt und dann die IDs von Parse in einem neuen Feld mit dem Namen ParseID speichert, um sie bei Bedarf als Referenz verwenden zu können.

Zum Beispiel:

 
PARSE DATA: 

    "_id": ObjectId(1234567890), 
    "title": "Mongo Migrate", 
    "description": "Migrating from Parse to Mongo" 



MONGO DATA: 

    "_id": ObjectId(1ad83e4k2ab8e0daa8ebde7), //mongo generated 
    "parseId":ObjectId(1234567890), 
    "title": "Mongo Migrate", 
    "description": "Migrating from Parse to Mongo" 

Dann, wenn Sie später ein Dokument zwischen den beiden Datenbanken übereinstimmen müssen, können Sie ein Skript schreiben, die entlang der Linien von Parse.find ({ „_ id“ geht: Mongo. parseId}) .....

0

MongoDB verwendet standardmäßig _id als Primärschlüssel. _id muss eindeutig sein, um eine Kollision zu vermeiden. Die Art, wie Sie eine eindeutige ObjectId zu _id generieren, ist in Ordnung. Solange sie einzigartig sind, können Sie sogar das 20-stellige Pad verkleinern, um Platz zu sparen.

Verwandte Themen