Node.js 如何使用findAndModify()?推送阵列?
我的用户模式是:Node.js 如何使用findAndModify()?推送阵列?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我的用户模式是: module.exports = mongoose.model('users', { userName: String, messages: Array }); 信息将是: messages: [{msg: "foo", time: new Date()},{msg: "Bar", time: new Date()}] 如果没有匹配的用户名,或者如果找到了,我希望能够创建一个新记录。将msg和time推入数据库 userSchema.findAndModi
module.exports = mongoose.model('users', {
userName: String,
messages: Array
});
信息将是:
messages: [{msg: "foo", time: new Date()},{msg: "Bar", time: new Date()}]
如果没有匹配的用户名,或者如果找到了,我希望能够创建一个新记录。将msg
和time
推入数据库
userSchema.findAndModify({
query:{userName: "Test"},
update:{$push: {messages: {msg: "foo", time: new Date()}}},
});
我假设这是正确的,如果没有找到
用户名
,我将如何添加新用户?假设您的上述查询为真
您的上述查询应具有upsert:true
像
userSchema.findAndModify({
查询:{userName:“Test”},
更新:{$push:{messages:{msg:“foo”,时间:new Date()}},
新:正确,
厄普塞特:是的
});
此处new
表示返回更新或插入的对象。
upsert
表示根据记录存在条件插入新记录或更新记录
现在,当您推送第一条消息时,如果用户名不存在,那么它将自动插入
否则,如果要插入用户的其他属性,
您应该使用update:{$set:
命令
希望它能帮助你
谢谢我如何处理猫鼬?“findOneAndUpdate”mongoose提供了两个选项
findOneAndUpdate
和findbyidanddupdate
。它们在内部调用findanddomify
。在您的情况下,它将是findOneAndUpdate
谢谢,在我发现findanddomify之前,我确实有100行代码来执行此操作。我的代码现在很干净。