MongoDB:如何获取包含最接近给定数字的数值的文档
Posted
技术标签:
【中文标题】MongoDB:如何获取包含最接近给定数字的数值的文档【英文标题】:MongoDB: How to get the document that contains the numeric value closest to a given number 【发布时间】:2015-10-01 06:24:42 【问题描述】:鉴于以下 MongoDB 文档...
"_id" : ObjectId("55e67b28010000880ca4c043"), "amount" : "value" : 1.125, "currency" : "USD"
"_id" : ObjectId("55e897e60100009f0051da48"), "amount" : "value" : 1.525, "currency" : "USD"
"_id" : ObjectId("55ea1b520100006d004e602a"), "amount" : "value" : 1.825, "currency" : "USD"
如何获取最接近 2.0(在本例中为 1.825)的 amount.value
的文档?例如,我需要创建一个以数字为输入的查询,并返回最接近指定数字的amount.value
文档。
【问题讨论】:
如果你有值 2.1 你想返回什么? 还是 1.825... 我需要找到最接近的数字,不管给定的数字是小还是大。 您是否可以灵活地将值更改为“值”:[1.125,0]? 这有点困难,因为这样的改变会影响很多代码......第二个数字是什么? MongoDB 支持地理定位索引,它将支持 $near,但如果您不习惯可以使用下面 Nishant 给出的 ans 【参考方案1】:您可以在两个查询中完成它。
providedValue = 1.34;
closestBelow = db.test.find(
"amount.value":
$lte: providedValue
).sort(
amount.value: -1
).limit(1);
closestAbove = db.test.find(
"amount.value":
$gte: providedValue
).sort(
amount.value: 1
).limit(1);
您可以查看此链接以获取更多详细信息 mongodb - Find document with closest integer value
【讨论】:
我正在考虑这是否可以通过使用聚合或某事物创建的链表来实现。将在运行时保存查询...以上是关于MongoDB:如何获取包含最接近给定数字的数值的文档的主要内容,如果未能解决你的问题,请参考以下文章
当我从参数接收到 Iterable 时,如何使用带有 java8 的 Lamba 表达式从给定值中找到最接近的数字? [复制]