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

Mongoid Query DB af Virtual Attribute

Du kan gøre dette i mongoDB ved hjælp af Aggregation Framework (nyt i version 2.2).

Du skal have rækken af ​​brugernes fællesskaber til rådighed. Jeg vil kalde det userComms i dette eksempel - jeg forventer, at det er et array med samme type værdier, som posts.communities er.

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

Dette returnerer et dokument af formen:

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

Resultatarrayet indeholder _id'er af indlæg og relevante som beregnet ved at tilføje antallet af fællesskaber, de havde til fælles med brugeren. Så er det sorteret (faldende) efter den sum.




  1. Hvordan opretter mongodb database/samling i farten

  2. Returner hgetall-listen fra redis i nodejs

  3. Spring data rest-applikation henter ikke data fra databasen efter implementering af redis caching

  4. Mongodb Aggregation efter Dag derefter Time