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

W MongoDB szukaj w tablicy i sortuj według liczby dopasowań

Tak, jest to możliwe za pomocą Aggregation Framework.

Założenia

  • Zbiór danych użyty tutaj jest taki sam, jak w Pobierz dokumenty z tagami na liście, uporządkowany według całkowitej liczby dopasowań
  • tags atrybut to zestaw (bez powtarzających się elementów)

Zapytanie

Takie podejście zmusza cię do rozwinięcia wyników i ponownej oceny predykatu dopasowania z nierozwiniętymi wynikami, więc jest to naprawdę nieefektywne.

db.test_col.aggregate(
    {$match: {tags: {$in: ["shirt","cotton","black"]}}}, 
    {$unwind: "$tags"}, 
    {$match: {tags: {$in: ["shirt","cotton","black"]}}}, 
    {$group: {
        _id:{"_id":1}, 
        matches:{$sum:1}
    }}, 
    {$sort:{matches:-1}}
);

Oczekiwane wyniki

{
    "result" : [
        {
            "_id" : {
                "_id" : ObjectId("5051f1786a64bd2c54918b26")
            },
            "matches" : 3
        },
        {
            "_id" : {
                "_id" : ObjectId("5051f1726a64bd2c54918b24")
            },
            "matches" : 2
        },
        {
            "_id" : {
                "_id" : ObjectId("5051f1756a64bd2c54918b25")
            },
            "matches" : 1
        }
    ],
    "ok" : 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Licznik grup z MongoDB przy użyciu frameworka agregacji

  2. Jak możemy stworzyć automatycznie generowane pole dla mongodb za pomocą wiosennego rozruchu?

  3. Flask — złe żądanie Przeglądarka (lub serwer proxy) wysłała żądanie, którego ten serwer nie mógł zrozumieć

  4. Zmiana kształtu dokumentu MongoDB

  5. Najlepsze praktyki .NET dotyczące połączeń MongoDB?