İlginç bir sorun. Tek bir sorguda bunu yapabilir bilmiyorum ama ikisi de yapabilirsiniz:
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);
Sonra sadece hedef tamsayıya
ratio
yakın sahiptir iki dokümanlar hangi kontrol edin.
MongoDB 3.2 Güncelleme
3.2 sürüm ekler şimdi bu tek aggregate
sorguda yapılması sağlar $abs
mutlak değer toplama operatörü için destek: Başka bir fikrim var
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}
])
... seni bu vereceğim düşünüyorum ben bu şekilde coğrafi konum uygulayarak kabul etmişti Bir atış. Oran değeri aslında bir görüntünün en boy oranıdır, bu yüzden widthxheight'ı boyutsal bir sorgu olarak ele alabilirim. – DeaconDesperado