I Aggregationsanfrage haben, sieht das wie folgt aus:MongoDB Art Sammlung von benutzerdefinierten Feld
aggregate.append([
{$sort: paginateOptions.sort},
{$match: paginateOptions.match},
{$skip: (paginateOptions.page - 1) * paginateOptions.limit},
{$limit: paginateOptions.limit},
{
$lookup: {
from: 'users',
localField: 'owner',
foreignField: '_id',
as: 'owner'
}
},
{
$unwind: {
path: '$owner',
preserveNullAndEmptyArrays: true
}
},
{
$project: {
name: {
$concat: ["$firstname", " ", "$lastname"]
},
email: 1,
owner: {
_id: 1,
username: 1
},
last_note: {
$arrayElemAt: ["$notes", -1]
}
}
}
])
ich von der letzten Note Zeitfeld (last_note.time) sortieren möchten. Das Problem ist, dass dieses Feld im Projektprozess erstellt wird, und wenn ich eine Sortierung nach dem Projekt hinzufügen, werde ich eine Sortierung nur für die Limit-Dokumente erhalten, nicht für die gesamte Sammlung (weil es nach dem Limit sein wird und überspringen ..)
Was kann ich tun?
auf diese Weise die Leistung der Abfrage schlecht sein wird. Die Sortierung sollte vor dem Projekt erfolgen, auch das Überspringen und Limit, wie von den mongodb-docs – user3712353