sql >> Base de Datos >  >> NoSQL >> MongoDB

Diseño MongoDB - etiquetas

Probablemente optaría por un esquema como este, que almacena las etiquetas en un campo de matriz de cadenas:

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" ]
})

No necesitaría map-reduce para este tipo de consulta. Al incrustar las etiquetas dentro del documento de la película, puede aprovechar las multikey de MongoDB. función y busque películas con una etiqueta dada usando un único find() consulta como esta:

db.movies.find( { tags: "dream" } )

Y como dijiste, también vale la pena agregar un índice a la matriz multiclave para mejorar el rendimiento de las consultas:

db.movies.ensureIndex( { tags: 1 } )