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

MongoDbのディープレコードを更新する

    問題は、$を使用できないことです 配列内のネストされたレベルでの一致を示す演算子。そして最も重要なのは、指定できるのは1回だけです。

    ドキュメント から述べられているように 、それは$ のみ 最初に一致する 要素が見つかりました。それはだけではありません クエリに複数の一致がある場合は、最初の一致のみが選択されることを意味します。これは、のみを意味します。 最初に一致した 配列位置が使用されます。つまり、このようなものも機能しないということです:

    { $set: { '_children.addressesR.1._children.configId.a._children.$.b': 30 } 
    

    indexと誤って一致するため 1 予期していなかったアイテムを評価して更新します。

    全体を更新できる可能性がある場合 配列の場合、次のように機能します。

    { $set: {"_children.addressesR.$._children.configId.a._children": [ { b: 10}, { b: 30} ] } }
    

    indexなので、私が言ったとおりです。 最初に一致しています 配列。

    しかし、あなたが持っている構造を考えると、あなたの最良の選択肢は、代わりにそのトップレベルの配列をサブドキュメントに変更することであるように思われます。実際には、これが2つではなく配列である理由がない限り 現在のように見える混合ドキュメントタイプ。



    1. Mongodb / Mongoid-{:multi=>true}はどういう意味ですか

    2. ClusterControlを使用した複数のデータベーステクノロジーの管理

    3. Mongodb shell mongo:通常、各ソケットアドレス(プロトコル/ネットワークアドレス/ポート)の使用は1回のみ許可されます。ソケットの場合:0.0.0.0:27017

    4. node.jsとmongooseのコールバックからの戻り値