sql >> Database teknologi >  >> NoSQL >> MongoDB

mongodb - Find dokument med nærmeste heltalsværdi

Interessant problem. Jeg ved ikke, om du kan gøre det i en enkelt forespørgsel, men du kan gøre det på to:

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

Så tjekker du bare hvilken af ​​de to dokumenter der har ratio tættest på målheltallet.

MongoDB 3.2-opdatering

3.2-udgivelsen tilføjer understøttelse af $abs absolut værdi aggregeringsoperator, som nu gør det muligt at gøre dette i et enkelt aggregate forespørgsel:

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. MongoDB Embedded Objects har intet ID (nul værdi)

  2. Top 10 funktioner i MongoDB Atlas

  3. Forstå MongoDB BSON Dokumentstørrelsesgrænse

  4. Hvordan øger man et felt i mongodb?