通过Mongoose将对象推入MongoDB子目录数组

时间:2014-03-08 23:45:57

标签: javascript node.js mongodb mongoose

我目前有以下mongoose模型设置:

var Customer = mongoose.model('Customer', {
    firstname : String,
    lastname : String,
    phone : String,
    street : String,
    city : String,
    state : String,
    zip : String,
    fixed : Boolean,
    readings: [Number]
});

以下列方式使用它:

app.post('/api/findcustomer/:customer_id/:customer_reading', function(req, res) {
    Customer.update({_id: req.params.customer_id},
        {$push: {readings: req.params.customer_reading}},
        {upsert:true},
        function(err, customer){
        if(err){
            console.log(err);
        }else{
            console.log("Successfully added");
        }
    });
    Customer.findOne({
        _id : req.params.customer_id
    }, function(err, customer) {
        if (err)
            res.send(err);
        res.json(customer);
    });
});

目前正在运作。然而,我真正想要做的是读数(在我的模型中)是一个由阅读和日期组成的对象数组。我最好的尝试包括以下变化:

readings: [{reading: Number, date: String}]

{$push: {readings: {reading: req.params.customer_reading, date: 'Some Date'}}}

这对我不起作用,即使我在控制台中成功添加了日志,阵列仍然是空的。我不确定如何解决问题,到目前为止我的搜索没有产生任何结果。可能我的阶段在搜索时是错误的,在我请求考虑子文档数组或对象数组的情况下的读数,或者只是一个子文档本身?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

Ug ...看来我的尝试是正确的,但是我试图将读数添加到使用旧架构构建的客户。当我使用NEW模式创建一个新客户并尝试将读取对象添加到数组时它工作了!