sql >> Databáze >  >> NoSQL >> MongoDB

Jak implementovat značky příspěvků v Mongo?

Pokud je nepravděpodobné, že se značky, které používáte, a jejich příslušné slimáky změní, myslím, že váš druhý přístup je lepší. Navrhoval bych však malou změnu – spíše než ukládání pole [name, slug] , vytvořte pole explicitní vytvořením vnořeného dokumentu značky jako v tomto příkladu 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"
        },
    ]
}

Poté se můžete dotazovat na příspěvky s konkrétní značkou pomocí tečkové notace takhle:

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

Protože tags je pole, mongo je dostatečně chytré na to, aby odpovídalo dotazu jakémukoli prvku pole, spíše než poli jako celku, a tečková notace vám umožňuje porovnávat s konkrétním polem.

Dotazovat se na příspěvky ne obsahující konkrétní značku, použijte $ne :

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

A k dotazování na příspěvky obsahující jednu značku, ale ne druhou, použijte $and :

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

Doufám, že to pomůže!




  1. Řazení podle maximálního pole pole, vzestupně nebo sestupně

  2. mongoose naplnit vrátí null pole

  3. Mongodb repica set config v souboru vlastností

  4. jak mohu automaticky zvýšit pole v mongodb pomocí kódu Java?