MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Projeto MongoDB - tags


Eu provavelmente usaria um esquema como este, que armazena as tags em um campo de matriz de 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" ]
})

Você não precisaria de redução de mapa para esse tipo de consulta. Ao incorporar as tags dentro do documento do filme, você pode aproveitar o multikey do MongoDB recurso e encontre filmes com uma determinada tag usando um único find() consulta assim:
db.movies.find( { tags: "dream" } )

E como você disse, também vale a pena adicionar um índice ao array multikey para melhorar o desempenho da consulta:
db.movies.ensureIndex( { tags: 1 } )