2017-02-21 4 views
0

У меня есть две коллекции, raw_doc и unique_doc в Монго. raw_doc получает импорт большого количества данных на регулярной основе (+ 500 тыс. Строк). unique_doc имеет каждый уникальный экземпляр из 3 полей, найденных в raw_doc.Массовое обновление всех ссылок между двумя коллекциями в Mongodb

сокращенный пример данных в каждой таблице

raw_doc

{Licence : "Free", Publisher : "Jeff's music", Name: "Music for all",Customer:"Dave", uniqueclip_id:12345}, 
{Licence : "Free", Publisher : "Jeff's music", Name: "Music for all",Customer:"Jim", uniqueclip_id:12345} 

unique_doc

{_id:12345, Licence : "Free", Publisher : "Jeff's music", Name: "Music for all"} 

Я хотел бы добавить ссылку на raw_doc, связывая его с соответствующий unique_doc. Я не могу использовать три поля в unique_doc для ключа, так как эти поля будут в конечном итоге отредактированы, но данные в raw_doc останутся неизменными (поэтому данные больше не будут совпадать, но все равно должны быть связаны).

Есть ли запрос, который я мог бы запустить в Mongo, который будет массировать идентификаторы с unique_doc и вставлять их в соответствующие raw_docs?

+0

Извините, не можете ли вы подробнее рассказать о своем вопросе? Как я понял, вы хотите помещать ссылки (почему не id?) В raw_doc в уникальный документ, но со временем что-то со временем изменится. –

+0

Идентификатор именно то, что я хочу, но в настоящее время я могу видеть только способ добавления идентификаторов один за другим, я хотел бы иметь один запрос, который обновляет все идентификаторы (как это возможно с помощью SQL). Мое текущее тестирование показывает, что один за другим процесс занимает несколько часов. Это слишком долго для моей симпатии. – danspants

+0

Похоже, «Лицензия в _id: 12345 изменилась», обновите все raw_doc, у которых есть этот идентификатор? –

ответ

0

Создание моей собственной личности впереди, кажется, путь. Мне удалось сократить время обработки до 120 с за 500 тыс. Строк.

0

Вы можете попробовать updateMany. Пожалуйста, попробуйте следующее:

db.raw_doc.updateMany({uniqueclip_id:"12345"},{$set:{uniqueclip_id:"54321"}}) 

Это обновит все документы в raw_doc, который содержит uniqueclip_id: «12345» и установить его на «54321».

+0

это то, что я делаю сейчас, что слишком долго (часы). Я буду тестировать свой собственный идентификатор и посмотреть, что произойдет. – danspants

+0

Тогда я не знаю. –

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

  • Нет связанных вопросов^_^