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

Mongodb wybiera wszystkie pola pogrupuj według jednego pola i sortuj według innego pola

To, czego chcesz, to coś, co można osiągnąć za pomocą struktury agregacji. Podstawowa forma ( która jest przydatna dla innych ) to:

db.collection.aggregate([

    // Group by the grouping key, but keep the valid values
    { "$group": {
        "_id": "$chainId",
        "docId": { "$first": "$_id" },
        "messageId": { "$first": "$messageId" },
        "createOn": { "$first": "$createdOn" }
    }},

    // Then sort
    { "$sort": { "createOn": -1 } }

])

Aby "grupować" różne wartości "messageId", biorąc $first wartości graniczne dla każdego z pozostałych pól. Alternatywnie, jeśli chcesz mieć największy, użyj $ostatni zamiast tego, ale dla najmniejszych lub największych w rzędzie prawdopodobnie ma sens $sortuj najpierw, w przeciwnym razie użyj $ min i $max jeśli cały rząd nie jest ważny.

Zobacz MongoDB aggregate() dokumentacja, aby uzyskać więcej informacji na temat użytkowania, a także dokumentacja sterownika JavaDocs i SpringData Mongo, aby lepiej wykorzystać metodę agregującą i możliwych pomocników.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dlaczego mongoose używa schematu, kiedy zaletą mongodb jest to, że jest pozbawiony schematu?

  2. Dołącz ciąg na końcu istniejącego pola w MongoDB

  3. Jak używać Spring Boot z MongoDB

  4. Wysyłanie zapytań do tablicy wewnątrz dokumentu mangusty

  5. Nieprzechwycony błąd:Gdy opcja modyfikatora ma wartość true, obiekt walidacji musi mieć co najmniej jeden operator