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

Mongoid Query DB według wirtualnego atrybutu

Możesz to zrobić w mongoDB za pomocą Struktury agregacji (nowość w wersji 2.2).

Musisz mieć dostępną tablicę społeczności Użytkownika. W tym przykładzie nazwę to userComms — spodziewam się, że będzie to tablica o tym samym typie wartości, co posts.communities.

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

Spowoduje to zwrócenie dokumentu w postaci:

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

Tablica wynikowa zawiera _ids postów i istotne, jak obliczono przez dodanie liczby społeczności, które mieli wspólne z użytkownikiem. Następnie jest sortowany (malejąco) według tej sumy.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wstaw do mongodb z perl

  2. php mongodb wyszukiwanie pełnotekstowe i sortowanie

  3. Node.js i MongoDB Time Zone Problem UTC nie jest poprawnie konwertowany przez sterownik?

  4. Jak wyszukiwać dokumenty w mongodb (pymongo), w których wszystkie słowa kluczowe występują w polu?

  5. pobierz wartości według nazwy klucza mongodb node.js driver