用Mongoose插入

我有一个像这样定义的模式

var UserSchema = mongoose.Schema({ user: { ipAddress: String, pollIDs: [{ id: String }] } }); var User = module.exports = mongoose.model('User', UserSchema); 

我想要创build一个路由,检查请求的IP地址,看看它是否存在于数据库中,如果它不创build一个新的文档与相应的ipAddress属性设置和当前req.body.poll_id是一个元素在pollIDs数组中。

但是,如果有一个具有该IP地址的文档,我希望将req.body.poll_id 入到pollIDs数组中。

我会演示我的第一次尝试,但我知道我搞砸了findOneAndUpdate调用的参数。

应该如此简单:

 User.findOneAndUpdate( {'user.ipAddress': req.body.ipAddress}, {$push: {'user.pollIDs': {id: req.body.poll_id}}}, {upsert: true, new: true}, (err, doc) => {...}); 

upsert将采取查询对象,并在需要插入新文档的情况下对其应用更新操作。