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

MongoDbは、最後から最初に出現したときに配列内のオブジェクトを更新します

    この場合、最後の要素を照合するか、実際には逆の順序で照合を処理するという点で、あなたが言っていることを理解しています。これと、position $ 演算子は常に「最初の」一致になります。

    ただし、 $ push 配列の最後に「追加」することです。しかし、MongoDB 2.6では、 $ position> 修飾子を使用して、実際には常に配列に「プリペンド」できるようにします。これは、「最も古い」アイテムが最後にあることを意味します。

    これを例に取ってください:

    db.artest.update(
       { "array": { "$in": [5] } },
       { "$push": { "array": { "$each": [5], "$position": 0 } }},
       { "upsert": true }
    )
    
    db.artest.update(
        { "array": { "$in": [5] } },
        { "$push": { "array": { "$each": [6], "$position": 0 } }},
        { "upsert": true }
    )
    

    これにより、通常の $ pushの「逆」のドキュメントが作成されます。 行動:

    { "_id" : ObjectId("53eaf4517d0dc314962c93f4"), "array" : [ 6, 5 ] }
    

    または、 $ sort> 要素を「順序付け」して逆にするためにドキュメントを更新するときの修飾子。ただし、重複する値が保存されている場合は、これが最善のオプションではない可能性があります。

    したがって、「最新の」アイテムを「最初」に一致させる場合は、配列を「リバース」に格納することを検討してください。現在、これが「最後からの一致」動作を取得する唯一の方法です。




    1. MongoDB:サブドキュメントIDで検索する方法は?

    2. redisまたはmongodbを使用してユーザー情報を保存する

    3. spring-data2.0.xでRedisCacheManagerを作成する方法

    4. mongdbアグリゲーションの文字列値からソート順を指定します