如果在Mongodb中找不到文档,如何替换或插入?

如果在Mongodb中找不到文档,如何替换或插入?,mongodb,mongoose,Mongodb,Mongoose,这是我的问题 地址=架构 creator是我试图匹配的关键 passAddress具有文档的所有元素 有什么帮助吗?我是mongodb新手这会有用的 const PassAddress = new address({ firstname:req.body.firstname, lastname:req.body.lastname, phone:req.body.phone, zip:req.body.zip, address1:req.body.ad

这是我的问题

  • 地址
    =架构
  • creator
    是我试图匹配的关键
  • passAddress
    具有文档的所有元素
有什么帮助吗?我是mongodb新手

这会有用的

 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
  });
     
参考资料:

这将有效

 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
  });
     

参考资料:

如果passAddress包含所有要插入更新的文档,只需使用simple update with upsert字段即可

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
        }
    }
);
db.collection.update(,{upsert:true)
//就你而言
地址.更新(
{creator:req.userData.unique_SHOP},
地址,
{ 
厄普塞特:没错,
}            
)

如果passAddress包含所有要插入更新的文档,只需使用简单的upsert update字段即可

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
        }
    }
);
db.collection.update(,{upsert:true)
//就你而言
地址.更新(
{creator:req.userData.unique_SHOP},
地址,
{ 
厄普塞特:没错,
}            
)

只需使用
$set
而不是
$setOnInsert
。nope@turivi只需使用
$set
而不是
$setOnInsert
。nope@turivishal谢谢,我知道这是正确的,但是@radial的答案起作用了!谢谢,我知道这是正确的,但是@radial的答案起作用了!