Maison > Questions et réponses > le corps du texte
J'utilise l'agrégation pour que tous les utilisateurs portent le même nom, mais chaque fois que j'interroge cette API, les résultats renvoyés ne sont pas triés même si j'ajoute le champ $sort by 'name'.
const aggregateQuery: any = [ { $group: { _id: '$name', count: { $sum: 1 }, users: { $push: '$$ROOT' } } }, { $match: { count: { $gt: 1 } } }, { $unwind: '$users' }, { $replaceRoot: { newRoot: '$users' } }, { $sort: { name: 1 } } ];` const users = await this.userRepository.getModel().aggregate(aggregateQuery).exec();
L'ordre des enregistrements n'est pas trié
P粉7399424052024-02-05 00:05:39
Vous devez être insensible à case 进行排序
Supposons que vous ayez besoin de name
和 age
,
Essayez cette requête :
[ { "$project": { "name": 1, "age" : 1, "insensitive": { "$toLower": "$name" } }},{ $group: { _id: ' $name', count: { $sum: 1 }, users: { $push: '$$ROOT' } } }, { $match: { count: { $gte: 1 } } }, { $unwind: '$用户' }, { $replaceRoot: { newRoot: '$users' } }, { $sort: { insensitive: 1 } } ]
Si vous avez plus de champs à ajouter à la sortie, essayez la requête suivante au lieu de celle ci-dessus.
[ { "$project": { "name": 1, createdAt : 1 }},{ $group: { _id: '$name', count: { $sum: 1 }, users: { $push : '$$ROOT' } } }, { $match: { count: { $gte: 1 } } }, {"$addFields":{"users.insensitive": { "$toLower": "$_id" } ,}}, { $unwind: '$users' }, { $replaceRoot: { newRoot: '$users' } }, { $sort: { insensitive: 1 } } ]