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

mongodb - Znajdź dokument z najbliższą liczbą całkowitą

Ciekawy problem. Nie wiem, czy możesz to zrobić w jednym zapytaniu, ale możesz to zrobić w dwóch:

var x = 1; // given integer
closestBelow = db.test.find({ratio: {$lte: x}}).sort({ratio: -1}).limit(1);
closestAbove = db.test.find({ratio: {$gt: x}}).sort({ratio: 1}).limit(1);

Następnie po prostu sprawdzasz, który z dwóch dokumentów ma ratio najbliżej docelowej liczby całkowitej.

Aktualizacja MongoDB 3.2

Wersja 3.2 dodaje obsługę $abs operator agregacji wartości bezwzględnej, który pozwala teraz na wykonanie tego w pojedynczej aggregate zapytanie:

var x = 1;
db.test.aggregate([
    // Project a diff field that's the absolute difference along with the original doc.
    {$project: {diff: {$abs: {$subtract: [x, '$ratio']}}, doc: '$$ROOT'}},
    // Order the docs by diff
    {$sort: {diff: 1}},
    // Take the first one
    {$limit: 1}
])


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak obliczyć bieżącą sumę za pomocą agregatu?

  2. Implementacja oceny obiektu wyrażenia zapytania podobnego do goMongoDB

  3. usuń _id z wyniku mongo

  4. Jak mogę przechowywać porę dnia w MongoDB? Jako ciąg? Podaj dowolny rok/miesiąc/dzień?

  5. MongoDB $przytnij