用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将采取查询对象,并在需要插入新文档的情况下对其应用更新操作。