Mongoose Как обновить, если существует, на основе пользовательских полей.В противном случае вставьте - PullRequest
0 голосов
/ 15 февраля 2019

Я создаю базу данных mongoDB, в которой хранятся данные о продажах из разных систем.Каждая система интегрируется через API-интерфейс node / mongoose / Express, который я создаю для базы данных.Как правило, вы проверяете идентификатор, чтобы определить, существует ли запись, и вставляете ее, если ее нет.Но поскольку идентификаторы из этих разных источников технически могут перекрываться, мне нужна система, чтобы убедиться, что источник может обновлять только те записи, которые исходили из этого источника.Поэтому я добавил столбец с именем «external_ID», в котором сохранен идентификатор записи из источника, и другой столбец с именем «ID интеграции», который будет уникальным для конкретной системы, отправляющей данные.Но для того, чтобы эта идея работала, мне нужно обновить только, если эти два столбца совпадают, и в противном случае вставить новую запись.Это возможно с MongoDB, или я подхожу к этому неправильно?

Большое спасибо.

1 Ответ

0 голосов
/ 15 февраля 2019

Используйте upsert на update().Он создаст новый документ, когда ни один документ не соответствует критериям запроса.

db.collection.update(<query>, <update>, { upsert: true })

Более подробную информацию можно найти по адресу Поведение при загрузке Документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...