Arrays 如何将对象正确地$push到MongoDB方案属性中,类型:array

Arrays 如何将对象正确地$push到MongoDB方案属性中,类型:array,arrays,mongodb,mongoose,schema,Arrays,Mongodb,Mongoose,Schema,我的Ads模型架构属性为: viewCount: { type: [] } 我有一个更新函数,我想向数组中添加一个对象,如下所示: exports.updateAd = function(req, res) { var conditions = { _id: req.body._id }; var update = {}; if (req.body.viewCount) { update.$push = { viewCou

我的Ads模型架构属性为:

viewCount: {
    type: []
}
我有一个更新函数,我想向数组中添加一个对象,如下所示:

exports.updateAd = function(req, res) {
    var conditions = { _id: req.body._id };
    var update = {};
    if (req.body.viewCount) {
        update.$push = {
            viewCount: {
                'date': Date.now(),
                'user': req.body.user
            }
        }
    }
    Ads.update(conditions, update, {}, function(err, result) {
        if (err) throw err;
        res.jsonp({
            'result': result
        });
    });
}
但这会使节点服务器崩溃。我尝试过它的一些变体,但无法使其正常工作。我肯定我遗漏了一些明显的东西,或者在我的理解上有差距

请告知

更新: 现在可以通过向更新函数添加
$upsert
multi
选项来实现,如下所示:

exports.updateAd = function(req, res) {
    var conditions = { _id: req.body._id };
    var update = {};
    if (req.body.viewCount) {
        update.$push = {
            viewCount: {
                'date': Date.now(),
                'user': req.body.user
            }
        }
    }
    Ads.update(conditions, update, {$upsert:false, multi:false}, function(err, result) {
        if (err) throw err;
        res.jsonp({
            'result': result
        });
    });
}
但从我在文档中读到的内容来看,这两个属性都默认为false。所以我不清楚为什么它们需要这样明确地设置

你能试试吗

var conditions = { _id: req.body._id };
var options = { $upsert : false, multi : false };
var update = { $push : {
        viewCount: {
            'date': Date.now(),
            'user': req.body.user
        }
}};

Ads.update(conditions, update, options, function(err, result) { ... }

您在mongo CLI中试用过吗?只有在猫鼬身上才失败?就是这样。它在CLI中正常工作:
db.ads.update({u id:ObjectId('5a530eb483a0e1122b24a251'),{$push:{viewCount:{user:'555b97c3fcf9464d49276f03',date:date.now()}}}
它必须与
更新={}有关
更新。$push=…
并且在我的更新对象中没有正确的层次结构…?您可以在更新前后发布一份示例文档吗?添加了这些更新选项以提高可读性,问题在于更新层次结构是!!成功了!那么这些选项是怎么回事?我所做的只是将$upsert和multi属性放入函数的updateoptions对象中,它现在可以工作了。不,您形成更新文档的方式可能是个问题。你能在更新之前和之后发布一个文档吗?