gpt4 book ai didi

arrays - Mongoose 更新与对数组的推送操作和对对象的设置操作

转载 作者:IT老高 更新时间:2023-10-28 13:18:59 24 4
gpt4 key购买 nike

我有这个 Mongoose 模式

var ContactSchema = module.exports = new mongoose.Schema({
name: {
type: String,
required: true
},
phone: {
type: Number,
required: true,
},
messages: [
{
title: {type: String, required: true},
msg: {type: String, required: true}
}],
address:{ city:String,
state:String
}
});

我最初的收藏集包含姓名和电话字段。我需要用新消息将集合更新到消息数组中,并将新地址更新到地址对象中。该函数还必须处理任何单个操作,即在某些情况下我只更新消息数组或更新名称和地址。那么我怎样才能在一个函数中完成所有操作。

        var messages= {
title: req.body.title,
msg: req.body.msg
}
Model.findOneAndUpdate({'_id': req.body.id,},{$push: {messages:message}},{upsert: true}, function (err, data) {
if (err) {
return res.status(500).send(err);
}
if (!data) {
return res.status(404).end();
}
return res.status(200).send(data);
});

最佳答案

您可以尝试同时使用 $set$push更新对象中的运算符。例如,假设您想在一个操作中同时更新名称和地址字段,对名称字段使用 $set 并对地址数组使用 $push 操作:

var messages= {
title: req.body.title,
msg: req.body.msg
},
query = {'_id': req.body.id},
update = {
$set: {name: req.body.name},
$push: {messages: message}
},
options = {upsert: true};

Model.findOneAndUpdate(query, update, options, function (err, data) {
if (err) {
return res.status(500).send(err);
}
if (!data) {
return res.status(404).end();
}
return res.status(200).send(data);
});

关于arrays - Mongoose 更新与对数组的推送操作和对对象的设置操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29302454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com