2017-12-07 6 views
0

Im mit Mongo 2.6 und als Teil einer Aggregation Pipeline muss ich ein Objekt zu allen Einträgen in einem Array hinzufügen. Da ich Mongo 2.6 verwende, kann ich $ addFields nicht verwenden.Mongo Aggregation Projekt hinzufügen Eigenschaft zu allen in Array

Meine Daten wie folgt aussieht:

:

{ 
"_id" : ObjectId("5a290637e4b08ddd7334e541"), 
"placeName" : "Caspeco Mobile Order", 
"created" : ISODate("2017-12-07T09:13:27.248Z"), 
"currency" : "SEK", 
"isCredit" : false, 
"costCenter" : { 
    "name" : "Test Restaurangen", 
    "number" : "800" 
}, 
"debitAccounts" : [ 
    { 
     "name" : "CASH", 
     "number" : "1915", 
     "amount" : 189.0 
    } 
], 
"creditAccounts" : [ 
    { 
     "name" : "Mat", 
     "number" : "3120", 
     "amount" : 168.749984741211 
    } 
], 
"taxAccounts" : [ 
    { 
     "name" : "Moms 12%", 
     "number" : "2621", 
     "amount" : 20.2500076293945 
    } 
], 
"credit" : false 

}

Und als erster Schritt in Aggregationen ich das Costcenter Objekt an alle potenziellen creditAccounts

mache ich etwas wie hinzufügen müssen

{$project: {'creditAccounts'{'costCentre':'$costCenter.name','costCentreAccount':'$costCenter.number','name':'$creditAccounts.name','number':'$creditAccounts.number','amount':'$creditAccounts.amount'}, document: '$$ROOT'}} 

Doent Arbeit seit es aa erzeugt rray von Namen und Nummern ...

Antwort

0

die Lösung gefunden $ Karte zu sein:

creditAccounts:{$map:{input:'$creditAccounts', as:'creditAcccount', in : {name:'$$creditAcccount.name',number:'$$creditAcccount.name',amount:'$$creditAcccount.amount', costCentre:'$costCenter.name',costCentreAccount:'$costCenter.number'}}} 

Auch wenn seine wirklich hässlich.

Verwandte Themen