我的userSchema是:
module.exports = mongoose.model('users', {
userName: String,
messages: Array
});
消息将是:
messages: [{msg: "foo", time: new Date()},{msg: "Bar", time: new Date()}]
如果没有匹配的userName,或者如果找到匹配的话,我希望能够创建一条新记录,array.push msg
和time
进入数据库。
userSchema.findAndModify({
query:{userName: "Test"},
update:{$push: {messages: {msg: "foo", time: new Date()}}},
});
我认为这是正确的,如果找不到userName
,我该如何添加新用户?
答案 0 :(得分:2)
假设您的上述查询为真,
您的上述查询应该有upsert:true
喜欢
userSchema.findAndModify({
query:{userName: "Test"},
update:{$push: {messages: {msg: "foo", time: new Date()}}},
new: true,
upsert : true
});
此处new
表示返回更新或插入的对象。
upsert
表示根据记录存在标准插入新记录或更新记录。
现在当您按下第一条消息时,如果用户名不存在,则会自动插入。
否则,如果要插入用户的其他属性,
你应该使用update: { $set:
命令。
希望它会对你有所帮助。
由于