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

空の配列を含む配列エントリを削除します

    質問に含まれていないため、何を試したかはわかりませんが、空の配列を確認する最善の方法は、基本的に0の場所を確認することです。 インデックスが $existsと一致しません :

    Inventory.update(
        { "products.rates.0": { "$exists": false } },
        { 
            "$pull": {
                "products": { "rates.0": { "$exists": false } }
            }
        },
        { "multi": true },
        function(err,numAffected) {
    
        }
    )
    

    .update()の「クエリ」部分 ステートメントは、"products.rates"に空の配列があるドキュメントにのみ触れようとすることを確認しています。 。これは必須ではありませんが、次の「更新」ステートメントの条件がtrueではないドキュメントでテストすることを回避します。 任意の配列要素に対して、したがって、物事を少し速くします。

    実際の「更新」部分は、 $pullに適用されます。 "products"で 「内部」"rates"であるアイテムを削除する配列 空の配列です。したがって、$pull内の「パス」 実際に"products"の内部を見ています とにかくコンテンツなので、ドキュメント全体ではなく、それに関連しています。

    当然$pull 1回の操作で一致するすべての要素を削除します。 "multi"> ステートメントを使用して複数のドキュメントを本当に更新する場合にのみ必要です




    1. MongoDBの値の代わりにキー名をクエリしてフィルタリングする

    2. mongodbを使用したAzure関数アプリでの耐久性のある関数の使用

    3. MongoDBは、サブドキュメントの各キーを集計します

    4. パスワードのマングースカスタム検証