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

MongoDBネストされた配列クエリ

    いくつかのクエリを実行した後、$inは配列の配列では機能しないという結論に達しました。 。

    $elemMatchを使用できます 代わりに、それは機能しますが、MongoDBのドキュメントがそれについて警告していないのはイライラします。

    このドキュメントを作成しました:

    {
          "_id": "51cb12857124a215940cf2d4",
          "level1": [
            [
              "item00",
              "item01"
            ],
            [
              "item10",
              "item11"
            ]
          ],
          "items": [
            "item20",
            "item21"
          ]
    }
    

    フィールド「items」は文字列の配列であり、このクエリは完全に機能することに注意してください。

    db.nested.findOne({"items":{"$in":["item20"]} })
    

    現在、「level1.0」も文字列の配列ですが、唯一の違いは、別の配列内にあることです。このクエリは機能するはずですが、機能しません:

    db.nested.findOne({"level1.0":{"$in":["item00"]} })
    

    結果を得る唯一の方法は、$ elemMatchを使用することです:

    db.nested.findOne({"level1":{"$elemMatch":{"$in":['item00']}} })
    

    したがって、$elemMatch 問題は解決しますが、実際の解決策は、MongoDBのドキュメントを更新して$inと記載することです。 配列の配列では機能しません。おそらく、10genにリクエストを送信する必要があります。



    1. Azure上の高性能MongoDBクラスター

    2. クライアントIPをredisで取得する方法はありますか?

    3. MongoDB-データベースを削除する

    4. セロリ労働者が一生懸命死んだ場合、仕事は再試行されますか?