配列内の要素をフィルタリングするだけの場合、一致する要素が1つだけであっても、配列全体が返され、一致しなかった場合は何も返されません。したがって、$unwind
を使用して、配列を異なるドキュメントに分割する必要があります。 演算子、そしてその後にのみ、$match
を使用して結果をフィルタリングしてみてください 。
次のクエリで問題が解決する可能性があります :
db.collection.aggregate([
{"$unwind": "$product"},
{"$match": {"product.name": "FirstWarehouseName1"}} // replace here with the name you want
])
mongoplayground で作業中
可能であれば、ヒント :MongoDBはスキーマレスであり、ほぼすべての形式のドキュメントを使用できますが、各製品を異なるドキュメントに保存する必要があります。各ドキュメントには、通常のリレーショナルデータベースの1行に相当する情報が含まれている必要があります。そうしないと、これらの問題が発生し始め、さらにパフォーマンスの問題が発生します。