Bạn muốn sử dụng $elemMatch
cho điều này.
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/ truy vấn / elemMatch /
Bạn cũng có thể sử dụng ký hiệu chấm mongodb và nó sẽ hoạt động khá giống bạn ngoại trừ:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
Mongodb biết cách diễn giải điều này trong trường hợp genres
là một mảng. Chỉ cần lưu ý rằng truy vấn ký hiệu dấu chấm hơi mơ hồ, vì nó cũng sẽ khớp với name
trong trường hợp genres
tài sản không phải là một mảng. Ví dụ:tài liệu này sẽ khớp với:
{"genres": { "name": "Shooter" } }
Trong mọi trường hợp, bạn có thể lập chỉ mục cho name
thuộc tính trong genres
mảng và chỉ mục sẽ được sử dụng để tra cứu.
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/ bảng chú giải thuật ngữ / # thuật ngữ-dấu chấm-ký hiệu
https://docs.mongodb.com/manual/reference/operator/ truy vấn / trong /