Jika Anda hanya memfilter elemen dalam array, meskipun hanya satu elemen yang cocok, seluruh array akan dikembalikan, dan tidak ada yang akan dikembalikan jika tidak ada kecocokan. Oleh karena itu, Anda perlu memisahkan array Anda ke dalam dokumen yang berbeda menggunakan $unwind
operator, dan hanya setelah itu, coba filter hasil menggunakan $match
.
Kueri berikut mungkin menyelesaikan masalah Anda :
db.collection.aggregate([
{"$unwind": "$product"},
{"$match": {"product.name": "FirstWarehouseName1"}} // replace here with the name you want
])
Bekerja mongoplayground
Jika boleh, hanya tip :Anda harus menyimpan setiap produk dalam dokumen yang berbeda, meskipun MongoDB tidak memiliki skema dan memungkinkan kita untuk memiliki hampir semua format dokumen, ingatlah bahwa setiap dokumen harus berisi setara dengan satu baris informasi dalam database relasional biasa. Jika tidak, Anda akan mulai mengalami masalah ini, dan selain itu, masalah kinerja.