Rumah  >  Soal Jawab  >  teks badan

Isih koleksi kumpulan selepas menggunakan pertanyaan agregat

Saya menggunakan pengagregatan untuk mempunyai semua pengguna dengan nama yang sama, tetapi setiap kali saya menanyakan API ini, hasil yang dikembalikan tidak diisih walaupun saya menambah medan $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();

Susunan rekod tidak diisih

P粉558478150P粉558478150258 hari yang lalu321

membalas semua(1)saya akan balas

  • P粉739942405

    P粉7399424052024-02-05 00:05:39

    Anda mesti tidak sensitif terhadap case 进行排序
    Katakan anda memerlukan nameage,

    Cuba pertanyaan ini:

    [ { "$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 } } ]

    Jika anda mempunyai lebih banyak medan untuk ditambahkan pada output, cuba pertanyaan berikut dan bukannya pertanyaan di atas.

    [ { "$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 } } ]

    balas
    0
  • Batalbalas