MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak zaimplementować tagi postów w Mongo?

Jeśli tagi, których używasz i odpowiadające im ślimaki, raczej się nie zmienią, myślę, że twoje drugie podejście jest lepsze. Sugerowałbym jednak małą zmianę - zamiast przechowywać tablicę [name, slug] , określ pola jawnie, tworząc poddokument tagu, jak w tym przykładzie post dokument:

{
    "_id" : ObjectId("4ee33229d8854784468cda7e"),
    "title" : "My Post",
    "content" : "This is a post with some tags",
    "tags" : [
        {
            "name" : "meta",
            "slug" : "34589734"
        },
        {
            "name" : "post",
            "slug" : "34asd97x"
        },
    ]
}

Następnie możesz wyszukiwać posty z określonym tagiem za pomocą notacji z kropkami tak:

db.test.find({ "tags.name" : "meta"})

Ponieważ tags jest tablicą, mongo jest wystarczająco sprytny, aby dopasować zapytanie do dowolnego elementu tablicy, a nie do tablicy jako całości, a notacja z kropkami pozwala na dopasowanie do określonego pola.

Zapytanie o posty nie zawierające określony tag, użyj $ne :

db.test.find({ "tags.name" : { $ne : "fish" }})

Aby wyszukiwać posty zawierające jeden tag, ale nie drugi, użyj $and :

db.test.find({ $and : [{ "tags.name" : { $ne : "fish"}}, {"tags.name" : "meta"}]})

Mam nadzieję, że to pomoże!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Skrypt MongoDB do tworzenia kopii zapasowej replikacji ustawionej lokalnie na Windows Server

  2. Jak dynamicznie budować zapytanie mongodb

  3. Mongodb wstawia dokument bez pola _id

  4. Importuj plik CSV (zawiera kilka znaków innych niż UTF8) w MongoDb

  5. Mongodb - dopasowanie regex kluczy dla poddokumentów