sql >> Database >  >> NoSQL >> MongoDB

MongoDB-ontwerp - tags

Ik zou waarschijnlijk gaan voor een schema als dit, dat de tags opslaat in een string-arrayveld:

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

U hebt geen kaartverkleining nodig voor dit type zoekopdracht. Door de tags in het filmdocument in te sluiten, kunt u profiteren van MongoDB's multikey en vind films met een bepaalde tag met behulp van enkele find() vraag als volgt:

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

En zoals je al zei, het is ook de moeite waard om een ​​index toe te voegen aan de multikey-array om de queryprestaties te verbeteren:

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


  1. MongoDB updateOne()

  2. mongodb:hoe het array-element op indexnummer bij te werken

  3. hoe $ ObjectId te projecteren om waarde in mongodb-aggregaat te stringen?

  4. Zoek een locatie binnen een opgeslagen cirkel