Ist es möglich, benennen Sie _id Feld nach mongo ' s-Gruppe aggregation?
Ich habe eine Abfrage wie folgt aus (vereinfacht):
db.report.aggregate([{
$match: {
main_id: ObjectId("58f0f67f50c6af16709fd2c7")
}
}, {
$group: {
_id: "$name",
count: {
$sum: 1
},
sum: {
$sum: {
$add: ["$P31", "$P32"]
}
}
}
}
])
Mache ich diese Abfrage aus java, und ich möchte, um eine Karte zu, auf meine Klasse, aber ich will nicht '_id' zugeordnet werden, der auf "name" - Feld. Denn wenn ich etwas wie das hier tun:
@JsonProperty("_id")
private String name;
wenn ich dann speichern Sie diese Daten wieder in mongo (nach einigen änderungen), werden die Daten gespeichert, mit Namen wie '_id' zwar möchte ich eine real-Id generiert werden.
So, wie kann ich umbenennen '_id' nach $Gruppe Betrieb?
- $project es auf die nächste Stufe in der pipeline
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erreichen dies durch hinzufügen einer
$project
Bühne am Ende der pipeline, wie diese :online testen: mongoplayground.net/p/QpVyh-0I-bP
name: "$name"
- nach der Gruppenphase, gibt es nicht ein Feld für den Namen mehr. Vielleicht ist das, was benötigt wird, istname: "$_id"
?Vom mongo v3.4 könnten Sie
$addFields
in Verbindung mit$project
zu vermeiden, zu schreiben, alle Felder in$project
werden könnte sehr mühsam.Dies geschieht in
$project
weil, wenn Sie speziell ein Feld, die anderen Felder werden automatisch ausgeschlossen.Beispiel:
wenn Sie
find
Methode können Sie das nicht tun, aber wenn Sie mitaggregation
es ist sehr einfach, wie diese: