zurückgegeben zu bekommen Ich habe Probleme mit meiner Aggregatfunktion. Ich versuche, die häufigsten Bestellungen der Benutzer aus der Datenbank zu bekommen, aber ich gebe nur den Namen und die Anzahl zurück. Ich habe versucht, den Operator $project
zu verwenden, aber ich kann nicht scheinen, dass es irgendetwas zurückgibt, was in der $group
Aussage ist.Mongodb Versucht, ausgewählte Felder von Aggregat
Hier ist meine aktuelle Aggregatfunktion:
OrderModel.aggregate(
{$unwind: "$products"},
{$match: { customerID: customerID }},
{$group: { _id: "$products.name", count: {$sum:1}}},
{$project: {name: "$_id", _id:0, count:1, active:1}},
{$sort: {"count" : -1}},
{$limit: 25 })
Dies ist nur eine Ausgabe erzeugt, wie {"count":10, "name": foo"}
folgt, während ich das ganze Objekt zurückkehren wollen; eingebettete Dokumente und alle. Irgendwelche Ideen, wo ich falsch liege?
Bearbeiten- Added Beispieldokument und erwartete Ausgabe
Dokument:
{
"charge": {},
"captured": true,
"refunds": [
],
"balance_transaction": "txn_104Ics4QFdqlbCVHAdV1G2Hb",
"failure_message": null,
"failure_code": null,
"amount_refunded": 0,
"customer": "cus_4IZMPAIkEdiiW0",
"invoice": null,
"dispute": null,
"statement_description": null,
"receipt_email": null
},
"total": 13.2,
"userToken": "cus_4IZMPAIkEdiiW0",
"customerID": "10152430176375255",
"_id": "53ad927ff0cb43215821c649",
"__v": 0,
"updated": 20140701082928810,
"created": 20140627154919216,
"messageReceived": false,
"ready": true,
"active": false,
"currency": "GBP",
"products": [
{
"name": "Foo",
"active": true,
"types": [
{
"variants": [
{
"name": "Bar",
"isDefault": false,
"price": 13.2
}
]
}
]
}
]
}
Erwartetes Ergebnis:
[
{
"name": "Foo",
"active": true,
"types": [
{
"variants": [
{
"name": "Bar",
"isDefault": false
}
]
},
{
"variants": [
{
"name": "Something else",
"isDefault": false
}
]
}
],
"quantity": 10
},
{
"name": "Another product",
"active": true,
"types": [
{
"variants": [
{
"name": "Bar",
"isDefault": false
}
]
}
],
"quantity": 7
}
]
Dank!
Zeigen Sie ein Beispieldokument aus Ihrer Sammlung an. Aber wenn "customerID" tatsächlich eine Gruppierung zwischen Dokumenten ist, dann wird das, was Sie tun, nicht funktionieren, wenn Sie die Originaldokumente zurück haben wollen. Zeigen Sie die Quelldokumente und Ihre erwarteten Ergebnisse an. –
@NeilLunn Ich habe den Beitrag jetzt aktualisiert. CustomerId ist keine Gruppierung zwischen Dokumenten, nur ein Feld in diesem Dokument. – donpisci