MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB дизайн - тагове

Вероятно бих избрал схема като тази, която съхранява таговете в поле за низов масив:

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

Нямате нужда от map-reduce за този тип заявка. Като вградите таговете в документа на филма, можете да се възползвате от multikey на MongoDB функция и намиране на филми с даден етикет с помощта на единичен find() заявка по следния начин:

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

И както казахте, също си струва да добавите индекс към масива с множество ключове, за да подобрите производителността на заявките:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да създадете поле за автоматично нарастване

  2. mongodb $pull съвпадение с regexp не работи

  3. Mongodb групиране и натискане с празни масиви

  4. MongoDB:Актуализиране на документи с използване на данни от същия документ

  5. Как да извикам mongodb в моите функции за карта/намаляване? Добра практика ли е?