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

配列フィールドでサブドキュメントを並べ替える方法は?

    MongoDBは、これをすぐに実行する方法を提供していませんが、ドキュメントを更新して$sortを使用するという回避策があります。 演算子を更新して配列を並べ替えます。

    db.collection.update_many({}, {"$push": {"topics": {"$each": [], "$sort": {"weight": -1}}}})
    

    .aggregate()は引き続き使用できます このような方法:

    db.collection.aggregate([
        {"$unwind": "$topics"}, 
        {"$sort": {"_id": 1, "topics.weight": -1}}, 
        {"$group": {"_id": "$_id", "topics": {"$push": "$topics"}}}
    ])
    

    ただし、配列を並べ替えるだけの場合、これは効率が低下します。絶対にそうすべきではありません。

    このクライアント側は、.sortを使用していつでも実行できます。 またはsorted 機能。



    1. RedisERR不明なコマンド'FLUSHDB'

    2. MongoDB diacriticInSensitive検索では、すべてのアクセント付き(発音区別符号付きの単語)行が期待どおりに表示されない、またはその逆

    3. jndi経由のMongoDb

    4. MongoDBのデフォルトのデータベースパスは何ですか?