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'
}
]
}