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

マングースの更新'は、要素をトラバースするためにパーツ(..)を使用できません

    位置$を使用してみてください オペレーター 配列内の要素の位置を明示的に指定せずに更新する配列内の要素を識別する更新では、これは一度に1つの要素にのみ一致します:

     User.update(
        { 
            "local.email": user,
            "devices.id": { "$ne": deviceID },
            "devices.name": { "$ne": deviceName }
        }, 
        { 
            "$set": { 
                "devices.$.id": deviceID,
                "devices.$.name": deviceName 
            }
        } 
    );
    

    docs から 、positional $演算子は、クエリドキュメントに一致する最初の要素のプレースホルダーとして機能し、配列フィールドはクエリドキュメントの一部として表示される必要があるため、クエリドキュメント

    "devices.id": { "$ne": deviceID },
    "devices.name": { "$ne": deviceName }
    

    deviceが含まれています 配列であり、deviceが存在するドキュメントと一致します 配列id deviceIDと等しくありません 名前は、更新しようとしている名前と同じではありません。これは、deviceが存在するドキュメントにも一致します 配列が空です。



    1. Meteor:特定のオブジェクトのフィールドからデータを返すにはどうすればよいですか?

    2. シンプルだが大きなデータベースの小さなコレクションに対するmongoDBクエリが途方もなく遅い

    3. 現在の時刻に依存するモンゴビューの作成

    4. マングースの更新の代わりにfindOneAndUpdate増分