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

Mongoid Query DB podle virtuálního atributu

Můžete to udělat v mongoDB pomocí Agregační rámec (novinka ve verzi 2.2).

Musíte mít k dispozici řadu uživatelských komunit. V tomto příkladu to nazvu userComms – očekávám, že to bude pole se stejným typem hodnot jako posts.communities.

db.posts.aggregate( [
    {
        "$unwind" : "$communities"
    },
    {
        "$match" : {
            "communities" : {
                "$in" : userComms
            }
        }
    },
    {
        "$group" : {
            "_id" : "$_id",
            "relevance" : {
                "$sum" : 1
            }
        }
    },
    {
        "$sort" : {
            "relevance" : -1
        }
    }
]);

Tím se vrátí dokument ve tvaru:

{
    "result" : [
        {
            "_id" : 1,
            "relevance" : 4
        },
        {
            "_id" : 6,
            "relevance" : 3
        },
...
        ]
}

Pole výsledků obsahuje _id příspěvků a relevantní podle výpočtu sečtením počtu komunit, které měly s uživatelem společné. Potom se seřadí (sestupně) podle tohoto součtu.




  1. Dotaz na rekurzi?

  2. Push prvek na libovolné pozici pole ve vnořeném dokumentu

  3. Podmíněná částka $ v MongoDB

  4. Nastavit kvótu databáze MongoDB (SIZE)