MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Сортиране на записи по начин, така че само записите, които съответстват на идентификатор, да са първи?

Не мисля, че има пряк начин да направите това, ако наистина искате, опитайте $cond оператор за проверка на условието на конкретно поле,

  • добавете ново поле matchResult в $project той ще провери createdBy съответства на върнато 1, в противен случай 0,
  • $sort от matchResult в низходящ ред
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),
]);

Playground

Втората опция е $regexMatch оператор за агрегиране, започвайки от MongoDB v4.2,

Playground




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Получаване на разлика в секунди от две дати в JavaScript

  2. Актуализиран запис на проект MongoDB във вложен масив в заявка за намиране и модифициране

  3. Няма сървър, избран от WritableServerSelector от клъстер

  4. Коя е машината на JavaScript, която изпълнява обвивката на mongoDB?

  5. Mongodb получава 3-байтовия брояч от ObjectId