Mongodb: jak znaleźć maksymalną wartość w kolekcji
Aby znaleźć maksymalną wartość pola w MongoDB, możesz użyć następujących metod:
Metoda 1: Zwróć dokument zawierający maksymalną wartość
db.teams.find().sort({" field ": -1 }).limit( 1 )
Ten fragment kodu sortuje wszystkie dokumenty w kolekcji w kolejności malejącej na podstawie określonego pola, a następnie zwraca tylko pierwszy dokument.
Metoda 2: Zwróć tylko wartość maksymalną
db.teams.find().sort({" field ": -1 }).limit( 1 ).toArray().map(function(u){ return u.field})
Poniższe przykłady pokazują, jak używać każdej metody w przypadku zespołu zbierającego z następującymi dokumentami:
db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 }) db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 }) db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 }) db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 }) db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })
Przykład 1: Zwróć dokument zawierający maksymalną wartość
Za pomocą poniższego kodu możemy zwrócić dokument zawierający maksymalną wartość w polu „punkty”:
db.teams.find().sort({" points ": -1 }).limit( 1 )
To zapytanie zwraca następujący dokument:
{ _id: ObjectId("618285361a42e92ac9ccd2c6"), team: 'Cavs', position: 'Guard', points: 33 }
Dokument ten zostaje zwrócony, ponieważ zawiera najwyższą wartość (33) w polu „punkty” spośród wszystkich dokumentów.
Przykład 2: Zwróć tylko wartość maksymalną
Możemy użyć poniższego kodu, aby zwrócić tylko maksymalną wartość w polu „punkty” na wszystkich dokumentach:
db.teams.find().sort({" points ": -1 }).limit( 1 ).toArray().map(function(u){ return u.points})
To zapytanie zwraca następujący wynik:
[33]
Należy zauważyć, że zwracana jest tylko sama wartość maksymalna (33), a nie cały dokument zawierający wartość maksymalną.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:
MongoDB: Jak grupować i liczyć
MongoDB: Jak grupować według wielu pól
MongoDB: Jak sprawdzić, czy pole zawiera ciąg znaków