使用Mongoose

时间:2017-06-04 04:40:06

标签: node.js mongodb express mongoose

我有一个定义为

的架构
var UserSchema = mongoose.Schema({
    user: {
        ipAddress: String,
        pollIDs: [{
            id: String
        }]
    }
});

var User = module.exports = mongoose.model('User', UserSchema);

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

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

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

1 个答案:

答案 0 :(得分:1)

应该如此简单:

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

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