2016-07-07 4 views
0

Я пытаюсь перенести данные из Parse в новый проект, который использует Mongo как свою базу данных (без Parse/Parse Server). Поскольку схемы отличаются друг от друга между двумя проектами, я вручную пишу сценарий миграции для достижения этого.Преобразование Parse objectId в Mongo ObjectId?

Как я понимаю, Parse, похоже, использует идентификаторы длиной 10 символов для своих объектов (комбинации цифр, строчных букв и прописных букв), в то время как Mongo использует идентификаторы длиной 24 символа (12 байты представлены как hex).

Прямо сейчас, при переносе данных для документа из старого проекта в новый, я использую функцию, которая преобразует идентификатор анализа в уникальный Mongo ObjectId (он преобразует каждый символ в двухзначное шестнадцатеричное значение , затем накладывает 20-символьную строку с 4 нулями).

Это хороший подход? Я избегаю использования автоматического генератора ObjectId от Mongo в случае, когда мне когда-либо понадобится перенастроить любой старый документ Parse и найти соответствующий документ в новой базе данных. Я знаю, что автоматически созданные ObjectIds в Mongo также вставляют некоторые другие данные, такие как даты создания, но я не думаю, что это было бы важно, и я могу просто использовать свой пользовательский генератор ObjectId? Тем не менее, я не уверен в последствиях для производительности/если я просто перехожу к этой миграции неправильно.

ответ

1

Подход, который я рекомендую, позволяет Mongo автоматически генерировать идентификаторы, а затем сохранять идентификаторы Parse в новом поле, называемом parseID, для дальнейшего использования в случае необходимости.

Например:

 
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" 

Тогда, если вам нужно, чтобы соответствовать документ между двумя базами данных позже, вы можете написать скрипт, который идет по линии Parse.find ({ «_ идентификатор»: Монго. parseId}) .....

0

MongoDB по умолчанию использует _id как первичный ключ. _id должен быть уникальным, чтобы избежать столкновения. Способ создания уникального объекта ObjectId до _id в порядке. Пока они уникальны, вы можете даже уменьшить 20-значный пэд, чтобы сэкономить место.

Смежные вопросы