Pravděpodobně bych zvolil schéma, jako je toto, které ukládá značky do pole řetězce:
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" ]
})
Pro tento typ dotazu byste nepotřebovali map-reduce. Vložením značek do dokumentu filmu můžete využít multikey MongoDB funkce a najít filmy s danou značkou pomocí jednoho find() dotaz takto:
db.movies.find( { tags: "dream" } )
A jak jste řekli, také stojí za to přidat index do víceklíčového pole, abyste zlepšili výkon dotazů:
db.movies.ensureIndex( { tags: 1 } )