Mongoose / MongoDB - Prosty przykład dołączania do tablicy obiektów dokumentu ze wstępnie zdefiniowanym schematem

Dla uproszczenia, zakładając, że są to moje schematy kolekcji:

var MessageDeliverySchema = new Schema({
    from   : { type : String },
    to     : { type : String },
    status : { type : String }
});

var Messages = mongoose.model('messages',
new Schema({
    id              : ObjectId,
    user            : { type:String },
    'sent-messages' : [MessageDeliverySchema]
}));

Więc każdy dokument w kolekcjiWiadomości może mieć 4/5wysłane wiadomości zdefiniowane przez MessageDeliverySchema.

Chcę mieć tablicęwysłane wiadomości, więc za każdym razem, gdy przychodzi potwierdzenie dostawy, po prostu aktualizujęWiadomości i dodaj kolejną wysłaną wiadomość.

Co próbowałem:

var delivered = {
from: 'foo',
to: 'bar',
status: 'delivered'
};

Message.update({_id: '5064aae4154cb34d14000001' },
        {$pushAll: { 'sent-messages' : delivered }} , {upsert:true}, function(err, data) { 

});

Message.update({_id: '5064aae4154cb34d14000001' },
         {$push: { 'sent-messages' : delivered }},{upsert:true}, function(err, data) { 
});

$ pushAll i $ push nie dołączają nowego obiektu dowysłane wiadomościzamiast tego zastępuje istniejącą wiadomość.

Chcę zobaczyć szereg wysyłanych wiadomości, np .:

{
    'sent-messages': [
        {
            from: 'foo',
            to: 'bar',
            status: 'delivered'
        },
        {
            from: 'pippo',
            to: 'pippo',
            status: 'delivered'
        },
        {
            from: 'paul',
            to: 'smith',
            status: 'undelivered'
        }
    ]
}

questionAnswers(1)

yourAnswerToTheQuestion