我如何使用findAndModify()?推一个阵列?

时间:2015-02-22 23:32:54

标签: node.js mongodb mongoose

我的userSchema是:

module.exports = mongoose.model('users', {
    userName: String,
    messages: Array 
});

消息将是:

messages: [{msg: "foo", time: new Date()},{msg: "Bar", time: new Date()}]

如果没有匹配的userName,或者如果找到匹配的话,我希望能够创建一条新记录,array.push msgtime进入数据库。

userSchema.findAndModify({
    query:{userName: "Test"},
    update:{$push: {messages: {msg: "foo", time: new Date()}}},
});

我认为这是正确的,如果找不到userName,我该如何添加新用户?

1 个答案:

答案 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:命令。

希望它会对你有所帮助。

由于