#mongodb #mongoose
#mongodb #mongoose
Вопрос:
address.update(
{creator:req.userData.unique_SHOP},
{$setOnInsert:PassAddress},
{
upsert:true,
}
)
это мой запрос
address
= схемаcreator
является ли ключ, который я пытаюсь сопоставитьpassAddress
содержит все элементы документов
const PassAddress = new address({
firstname:req.body.firstname,
lastname:req.body.lastname,
phone:req.body.phone,
zip:req.body.zip,
address1:req.body.address1,
address2:req.body.address2,
city:req.body.city,
state:req.body.state,
country:req.body.country,
creator:req.userData.unique_SHOP
});
любая помощь? я новичок в mongodb
Комментарии:
1. просто используйте
$set
вместо$setOnInsert
.2. нет @turivishal
Ответ №1:
Это сработает!
const PassAddress = new address({
firstname:req.body.firstname,
lastname:req.body.lastname,
phone:req.body.phone,
zip:req.body.zip,
address1:req.body.address1,
address2:req.body.address2,
city:req.body.city,
state:req.body.state,
country:req.body.country,
creator:req.userData.unique_SHOP
});
address.findOneAndUpdate(
{creator:req.userData.unique_SHOP}, // find a document with that filter
PassAddress, // document to insert when nothing was found
{upsert: true, new: true}, // options
function (err, doc) { // callback
if (err) {
// handle error
} else {
// handle document
}
}
);
Ссылка : https://silvantroxler.ch/2016/insert-or-update-with-mongodb-and-mongoose /
Ответ №2:
Если в passAddress есть все документы, которые вы хотите вставить для обновления, просто используйте простое обновление с полем upsert
db.collection.update(<query>, <update>,{upsert: true)
//in your case
address.update(
{creator:req.userData.unique_SHOP},
passAddress,
{
upsert:true,
}
)
Комментарии:
1. спасибо, я знаю, что это правильно, но ответ @ radial сработал!