Ich versuche, nicht gebundene Filialdokumente zu sortieren. Dies ist die Sammlung:mongodb sort unpopulated Filialdokument
[
{
otherFields: {},
visites: ["58d46ffbf1c383862cf5de4a", "58d46ffbf1c383862cf5de49"]
}
]
Und das ist das Aggregat:
db.exps.aggregate([
{ "$match": {} },
{ "$project": { "visites": 1 } },
{ "$unwind": "$visites" },
{ "$sort": { "visites.formVersion": 1 } },
{ "$group": { "_id": null, "count": { "$sum": 1 }, "data": { "$push": "$visites" } } }
])
Ich habe erkannt, dass es keinen Sinn, mit einem Unterfeld zu sortieren hat, wie das visites
Feld nur ein Array von IDs ist . Ist es möglich, sie im Aggregat zu befüllen, damit sie sortiert werden können?
Die Ergebnisse nach NodeJS Bevölkerung sind diese hier:
{
"count": 50,
"data": [
{
"_id": "58d46ffbf1c383862cf5de4a",
"formVersion": 4,
"start": "2017-06-04T07:30:00.000Z",
"end": "2017-06-04T08:30:00.000Z",
"type": "assessor",
"expedient": "58d46ffaf1c383862cf5de41",
"user": "58d46ff8f1c383862cf5de3a",
"__v": 0,
"isDeleted": false,
"lastModified": "2017-03-24T01:01:47.343Z",
"created": "2017-03-24T01:01:47.330Z"
},
{
"_id": "58d46ffbf1c383862cf5de49",
"formVersion": 3,
"start": "2017-06-03T07:30:00.000Z",
"end": "2017-06-03T08:30:00.000Z",
"type": "assessor",
"expedient": "58d46ffaf1c383862cf5de41",
"user": "58d46ff8f1c383862cf5de3a",
"__v": 0,
"isDeleted": false,
"lastModified": "2017-03-24T01:01:47.341Z",
"created": "2017-03-24T01:01:47.328Z"
},
[lookup] (https://docs.mongodb.com/manual/reference/operator/aggregation/lookup/) wird helfen – Veeram