я понимаю должен или пушить в массив данных объект или создавать новую запись и пушить в нее
Но оно почему то, когда нет такого юзера создает 2 записи в базе, а не одну, хотя отчитывается за 1 только
const isUserExist = (await User.findOne({ email })) != null;
await User.updateOne(
{ email, "api.key": { $ne: api?.key } },
{ $push: { api } },
{ upsert: !isUserExist },
);
{
acknowledged: true,
modifiedCount: 0,
upsertedId: new ObjectId("64bfddbe75b135853a6be5e1"),
upsertedCount: 1,
matchedCount: 0
}
В базе 2 записи в итоге с id "64bfddbe75b135853a6be5e1" и "64bfddbe75b135853a6be5e6"
выборки идут по разным критериям. При поиске используется просто email: email а при апдейте email и api.key должно быть одинаковое услвоие
о, спасибо, типа 2 выборки? подумаю как поправить
неконсистентно лучше будет insertOne если запись есть (судя по ошибке инсерта) - значит уже существует иначе успешный инсерт
спасибо, это не для постоянной работы, а для редкого запуска руками, ибо данные только в ручном режиме, но буду знать на будущее)
Обсуждают сегодня