MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Design MongoDB - tag

Probabilmente andrei con uno schema come questo, che memorizza i tag in un campo di array di stringhe:

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

Non avresti bisogno di map-reduce per questo tipo di query. Incorporando i tag all'interno del documento del film puoi sfruttare il multikey di MongoDB funzione e trova film con un determinato tag utilizzando find() query in questo modo:

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

E come hai detto, vale anche la pena aggiungere un indice all'array multikey per migliorare le prestazioni della query:

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