Ich habe Array von Objekten (verschachtelt), und ich möchte ein paar Elemente aus diesen verschachtelten Objekte ziehen und diese Felder in einem Array zurückgeben. Unten ist meine Dokumentstruktur (es von den ursprünglichen Daten verspottet)MongoDB-Projekt in ein Array
"detailLine": [
{
"name": "first",
"value": {
"lineNumber": 1,
"subLineCode": " ",
"detailLineCharges": {
"allowedAmount": {
"amount": "11111",
"reasonCode": “aaaah”
}
}
}
},
{
"name": "first",
"value": {
"detailLineCharges": {
"allowedAmount": {
"amount": "22222",
"reasonCode": “BBBB”
}
}
}
}
]
ich meine Ergebnisse möchte etwas sehen, wie dies
details: [
{
amount:”11111”,
reasonCode : “aaaah”
},
{
amount : “22222”,
reasonCode : “BBBB”
}
]
I
versuchtedb.collection.aggregate([
{
$match: {
_id: "123456"
}
},
{
$project: {
details: {
$push {
amount: "$detailLine.value.detailLineCharges.allowedAmount.amount",
reasoncode: "$detailLine.value.detailLineCharges.allowedAmount.reasonCode"
}
}
}
}
])
aber ich dies immer Fehler
Error: command failed: { "ok" : 0, "errmsg" : "invalid operator '$push'", "code" : 15999 } : aggregate failed :
Ich möchte $project
verwenden, weil ich es verwende, um zu viele andere Felder zu ziehen, deshalb habe ich $group
für dieses eine bestimmte Szenario nicht versucht.
Kann jemand helfen, wie man diese zwei Felder in einem Array bekommt?
OP speziell sagte er nicht $ Gruppe –
Nein, er sagte verwenden will er wollte $ project bc von der Anzahl der Felder verwenden und versuchte daher nicht $ group. Ich interpretiere es als seine klare Präferenz verwendet $ Projekt, aber nicht als $ Gruppe darf nicht verwendet werden. Deshalb schrieb ich 'obwohl ich $ group' verwende; Es war die beste Anstrengung, bis es noch helfen kann. Da es jetzt eine Antwort ohne $ -Gruppe gibt, sehe ich kein Problem, da dieses zu Recht angenommen wurde. – DAXaholic
DAXaholic, danke für die Arbeit. Ich schätze es. – JBone