У меня есть две коллекции (так и temp_so).Upsert вместо сохранения mongodb
Мой запрос:
db.getCollection('temp_sale_order').find({},'orderItemId').
forEach(function(element) { db.getCollection('sale_order').save(element); });
У меня есть документ с orderItemId
123 в temp_so. Я хочу проверить, существует ли документ с orderItemId
, поэтому запрос должен обновить весь документ. Если документ с orderItemId не существует, он должен создать его.
Запрос должен сделать это для всех документов в temp_so.
Мой текущий запрос просто вставляет данные так и не проверяет, существует ли документ с orderItemId
или нет. Как исправить это?
В SQL это можно записать в виде:
insert into so (select * from temp_so where orderItemId not in (select orderItemId from so));
Update so set col = select col from temp_so where temp_so.orderItemId = so.orderItemId.
*update for all the columns*
предыдущий ответ был прав '' orderItemId''. '{'orderItemId': 1}' удаляет все остальные значения ключа в документе. Thanx. –
@ManishGupta Второй параметр в '.find()' - это оператор проектирования, который «предназначен» для выбора только указанных полей. Вместо этого вместо «строки» ничего не делать. Поэтому, если вы не хотите выбирать только определенные поля, то полностью опустите «проецирование». –