MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Menyortir catatan sedemikian rupa sehingga hanya catatan yang cocok dengan id yang didahulukan?

Saya tidak berpikir ada cara langsung untuk melakukan ini, Jika Anda benar-benar ingin mencoba $cond operator untuk memeriksa kondisi pada bidang tertentu,

  • tambahkan bidang baru matchResult di $project itu akan memeriksa createdBy cocok dengan pengembalian 1 jika tidak 0,
  • $sort oleh matchResult dalam urutan menurun
const [messages, messageCount] = await Promise.all([
    MessageModel.aggregate([
        { $match: params },
        {
            $project: {
                ...filterObject,
                matchResult: {
                    $cond: [
                      { $eq: ["$createdBy", ObjectId("abcff9ef71fa048cea3c8a97")] },
                      1,
                      0
                    ]
                }
            }
        },
        { $sort: { matchResult: -1 } },
        { $skip: ctx.paginate.skip },
        { $limit: ctx.query.limit }
    ]),
    MessageModel.countDocuments(params),
]);

Taman bermain

Opsi kedua adalah $regexMatch operator agregasi mulai dari MongoDB v4.2,

Taman bermain




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Ada cara untuk menegakkan integritas referensial di MongoDB

  2. Desain dokumen MongoDB untuk komentar (dan komentar balasan mereka)

  3. Memesan bidang dari kueri pencarian dengan proyeksi

  4. banyak ke banyak hubungan dengan nosql (mongodb dan luwak)

  5. Hapus dokumen dari koleksi MongoDB berdasarkan waktu bidang Tanggal