Mongoose / MongoDB - Einfaches Beispiel für das Anhängen an ein Dokumentobjektarray mit einem vordefinierten Schema
Der Einfachheit halber wird davon ausgegangen, dass dies meine Erfassungsschemata sind:
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]
}));
Also jedes Dokument in der SammlungMitteilungen kann 4/5 habengesendeten Nachrichten definiert durch das MessageDeliverySchema.
Was ich tun möchte, ist eine Reihe vongesendeten NachrichtenJedes Mal, wenn ein Lieferschein eingeht, aktualisiere ich ihnMitteilungen und hängen Sie eine andere gesendete Nachricht an.
Was ich versucht habe:
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 und $ push hängen kein neues Objekt angesendeten NachrichtenStattdessen wird eine vorhandene Nachricht überschrieben.
Was ich sehen möchte, ist ein Array von gesendeten Nachrichten, z.
{
'sent-messages': [
{
from: 'foo',
to: 'bar',
status: 'delivered'
},
{
from: 'pippo',
to: 'pippo',
status: 'delivered'
},
{
from: 'paul',
to: 'smith',
status: 'undelivered'
}
]
}