Ich habe eine Sammlung wie folgt aus:mongoDB Abfrage Aggregat mit abzufragen, um die jüngste Datum eines Artikels
[
{ product_name: "Orange",vendor_name: "test1", category: "Fruit", business_date: "2015-06-12T00:00:00.000Z"},
{ product_name: "Orange",vendor_name: "test1", category: "Fruit", business_date: "2015-02-24T00:00:00.000Z"},
{ product_name: "Apple",vendor_name: "test2", category: "Fruit", business_date: "2015-07-11T00:00:00.000Z"},
{ product_name: "Apple",vendor_name: "test2", category: "Fruit", business_date: "2015-06-19T00:00:00.000Z"}
]
Ich möchte die Sammlung abfragen jedes Einzelteils jüngste „business_date“ zu finden, und in diesem Beispiel Es sollte record #2
und record #4
sein.
Wie würde ich weitergehen und eine aggregate
Anfrage dafür schreiben?
Ich habe dies versucht:
var pipeline = [
{
$sort: {
business_date: -1
}
},
{
$group : {
_id : { vendor_name: "$vendor_name", product_code: "$product_code" },
business_date: {$first: "$business_date"}
}
},
{
$match: {
vendor_name: {$in: ["test1", "test2"]},
category: 'Fruit'
}
}
]
db.sales.aggregate(pipeline);
Aber ich bekomme nichts zurück. Ich bin nicht wirklich erfahren mit MongoDB, würde jemand mich wissen lassen, was sollte die richtige (und die meisten Operation effizient) Weg, um diese Abfrage zu schreiben?
Sie sind fast da das letzte Spiel Ergebnisse all herausgefiltert, weil nach der $ Gruppe: die ID 'worden _id: {vendor_name:‚test1‘}'. Achten Sie darauf, dass die Aggrierungs-Pipeline nacheinander von Anfang bis Ende läuft und die Reihenfolge zählt. – somallg
Aggregation Pipeline docs https://docs.mongodb.com/manual/core/aggregation-pipeline/#aggregation-pipeline – Leo