MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

mongodb - Намерете документ с най-близката целочислена стойност

Интересен проблем. Не знам дали можете да го направите с една заявка, но можете да го направите с две:

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);

След това просто проверявате кой от двата документа има ratio най-близо до целевото цяло число.

Актуализация на MongoDB 3.2

Изданието 3.2 добавя поддръжка за $abs оператор за агрегиране на абсолютна стойност, който сега позволява това да се направи в един aggregate заявка:

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. mongodb.conf bind_ip =127.0.0.1 не работи, но 0.0.0.0 работи

  2. MongoDB + nodejs:как да потърся заявка за полетата на ISODate?

  3. Използване на map/reduce за картографиране на свойствата в колекция

  4. най-добрата практика на обединяването на django + PyMongo?

  5. mongoexport без поле _id