Saya mungkin akan menggunakan skema seperti ini, yang menyimpan tag dalam bidang array string:
db.movies.insert({
name: "The Godfather",
director: "Francis Ford Coppola",
tags: [ "mafia", "wedding", "violence" ]
})
db.movies.insert({
name: "Pulp Fiction",
director: "Quentin Tarantino",
tags: [ "briefcase", "violence", "gangster" ]
})
db.movies.insert({
name: "Inception",
director: "Christopher Nolan",
tags: [ "dream", "thief", "subconscious" ]
})
Anda tidak perlu pengurangan peta untuk jenis kueri ini. Dengan menyematkan tag di dalam dokumen film, Anda dapat memanfaatkan multikey MongoDB fitur, dan temukan film dengan tag tertentu menggunakan find() tunggal pertanyaan seperti ini:
db.movies.find( { tags: "dream" } )
Dan seperti yang Anda katakan, ada baiknya juga menambahkan indeks ke larik multikunci untuk meningkatkan kinerja kueri:
db.movies.ensureIndex( { tags: 1 } )