MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

mongodb - Tìm tài liệu có giá trị số nguyên gần nhất

Vấn đề thú vị. Tôi không biết liệu bạn có thể làm điều đó trong một truy vấn duy nhất hay không, nhưng bạn có thể làm điều đó trong cả hai:

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

Sau đó, bạn chỉ cần kiểm tra xem tài liệu nào trong hai tài liệu có tỷ lệ ratio gần nhất với số nguyên đích.

Bản cập nhật MongoDB 3.2

Bản phát hành 3.2 bổ sung hỗ trợ cho $abs toán tử tổng hợp giá trị tuyệt đối hiện cho phép điều này được thực hiện trong một aggregate duy nhất truy vấn:

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. Tại sao MongoDB lại nhanh như vậy

  2. Làm cách nào để chọn một trường duy nhất cho tất cả các tài liệu trong bộ sưu tập MongoDB?

  3. Về MongoDB, Tại sao chúng tôi sử dụng nó? Thuật ngữ và triển khai của MongoDB

  4. MongoDB 'không thể tìm thấy chỉ mục cho truy vấn $ geoNear'

  5. Lợi thế của việc sử dụng ObjectId thay vì một Chuỗi đơn giản là gì?