sql >> データベース >  >> NoSQL >> MongoDB

IDに一致するレコードのみが最初に来るようにレコードを並べ替えますか?

    これを行うための簡単な方法はないと思います。本当に必要な場合は、$condを試してください。 特定のフィールドの状態をチェックする演算子

    • 新しいフィールドmatchResultを追加します $projectcreatedByをチェックします リターン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),
    ]);
    

    遊び場

    2番目のオプションは $regexMatch です。 MongoDBv4.2以降の集計演算子

    遊び場




    1. 新しく作成したMongoDBインスタンスにデータをインポートします

    2. MongoDb-書き込みの多いアプリケーションにマルチCPUサーバーを利用する

    3. Python + Memcached:分散アプリケーションでの効率的なキャッシング

    4. Meteorアプリ—デプロイされたアプリのDBをリセットします