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

Mongoid Query DB чрез виртуален атрибут

Можете да направите това в mongoDB с помощта на Aggregation Framework (ново във версия 2.2).

Трябва да разполагате с набор от потребителски общности. Ще го нарека userComms в този пример - очаквам да бъде масив със същия тип стойности като posts.communities.

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

Това връща документ във формата:

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

Резултатният масив съдържа _ids на публикации и релевантни, изчислени чрез добавяне на броя на общностите, които са имали общо с потребителя. След това се сортира (в низходящ ред) по тази сума.




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

  2. mongoengine - Заявка към ListField на EmbeddedDocumentField

  3. Как да получите достъп до вече съществуваща колекция с Mongoose?

  4. Усъвършенстване на изкуството за автоматизиране и управление на най-популярните бази данни с отворен код:2017 @ Severalnines

  5. как да конфигурирате debezium полета, изпратени при събития за актуализиране (монго конектор)