MongoDB聚合运算符:$sqrt

MongoDB聚合运算符:$sqrt

文章目录

$sqrt聚合运算符返回数值的平方根,数值必须为正数,返回值为双精度数。

语法

js 复制代码
{ $sqrt: <number> }

<expression>为可解析为非负数的表达式。

使用

如果参数解析为 null 值或引用缺少的字段,则 $sqrt 返回 null。如果参数解析为 NaN,则 $sqrt 返回 NaN

如果参数为负数, $sqrt 将报错。

例子 结果
{ $sqrt: 25 } 5
{ $sqrt: 30 } 5.477225575051661
{ $sqrt: null } null

举例

points集合有下列文档:

js 复制代码
{ _id: 1, p1: { x: 5, y: 8 }, p2: { x: 0, y: 5} }
{ _id: 2, p1: { x: -2, y: 1 }, p2: { x: 1, y: 5} }
{ _id: 3, p1: { x: 4, y: 4 }, p2: { x: 4, y: 0} }

下面的示例使用 $sqrt 计算 p1p2 之间的距离:

js 复制代码
db.points.aggregate([
   {
     $project: {
        distance: {
           $sqrt: {
               $add: [
                  { $pow: [ { $subtract: [ "$p2.y", "$p1.y" ] }, 2 ] },
                  { $pow: [ { $subtract: [ "$p2.x", "$p1.x" ] }, 2 ] }
               ]
           }
        }
     }
   }
])

操作返回下面的结果:

json 复制代码
{ "_id" : 1, "distance" : 5.830951894845301 }
{ "_id" : 2, "distance" : 5 }
{ "_id" : 3, "distance" : 4 }
相关推荐
曹牧24 分钟前
‌‌Oracle CASE WHEN‌
数据库·oracle
x***133928 分钟前
【Mysql】:如何恢复误删的数据?
数据库·mysql
Databend31 分钟前
Databend 11 月月报:多模态查询智能
数据库
m***119038 分钟前
Windows版Redis本地后台启动
数据库·windows·redis
梁bk42 分钟前
Redis 内存回收
数据库·redis·缓存
菜鸟小九1 小时前
mysql运维(日志)
运维·数据库·mysql
SelectDB1 小时前
Apache Doris 实时更新全解:从设计原理到最佳实践|Deep Dive
数据库·apache
纪莫2 小时前
技术面:如何解决缓存和数据库一致性的问题?
数据库·redis·java面试⑧股
番茄你个西红42 小时前
安装KingbaseES时服务器swap的设置
linux·数据库
是一个Bug2 小时前
Spring事件监听器源码深度解析
java·数据库·spring