我如何使用findAndModify()? 推一个数组?

我的userSchema是:

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

消息将是:

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

我希望能够创build一个新的logging,如果没有匹配userName,或者如果它被发现,array.push的msgtime到数据库。

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

我假设这是正确的,如果没有find用户名,我将如何添加新用户?

假设你的上面的查询是真实的,

你的上面的查询应该有upsert:true

喜欢

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

这里new指示返回更新或插入的对象。 upsert指示根据logging存在标准插入新logging或更新logging。

现在,当你推送第一条消息,如果用户名不存在,那么它会自动插入。

否则,如果你想插入用户的其他属性,你应该使用update: { $set: command。

希望它会帮助你。

谢谢