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

MongoDbフィルター配列

    配列内の要素をフィルタリングするだけの場合、一致する要素が1つだけであっても、配列全体が返され、一致しなかった場合は何も返されません。したがって、$unwindを使用して、配列を異なるドキュメントに分割する必要があります。 演算子、そしてその後にのみ、$matchを使用して結果をフィルタリングしてみてください 。

    次のクエリで問題が解決する可能性があります

    db.collection.aggregate([
      {"$unwind": "$product"},
      {"$match": {"product.name": "FirstWarehouseName1"}} // replace here with the name you want
    ])
    

    mongoplayground で作業中

    可能であれば、ヒント :MongoDBはスキーマレスであり、ほぼすべての形式のドキュメントを使用できますが、各製品を異なるドキュメントに保存する必要があります。各ドキュメントには、通常のリレーショナルデータベースの1行に相当する情報が含まれている必要があります。そうしないと、これらの問題が発生し始め、さらにパフォーマンスの問題が発生します。



    1. MongoConnectionを待機するタイムアウト

    2. カスタムBSONマーシャリングの処理

    3. MongoDBでのアップサーティングとIdの問題

    4. Booksleeve接続を開く/閉じる頻度はどれくらいですか?