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

MongoDB design - tags

Jeg ville nok gå med et skema som dette, som gemmer tags i et string array felt:

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

Du behøver ikke kort-reducere for denne type forespørgsel. Ved at indlejre tags i filmdokumentet kan du drage fordel af MongoDBs multikey funktion, og find film med et givet tag ved hjælp af enkelt find() forespørgsel som denne:

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

Og som du sagde, er det også værd at tilføje et indeks til multikey-arrayet for at forbedre forespørgselsydeevnen:

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


  1. mongodb:hvordan frafiltrerer man de poster, der blev oprettet i dag?

  2. Brug af holdbare funktioner i azurblå funktionsapp med mongodb

  3. $lookup på ObjectId'er i et array

  4. $filter op til 2 indlejrede niveauer i mongodb