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 }
相关推荐
表示这么伤脑筋的题我不会几秒前
Oracle 21C 部署ogg踩过的坑
数据库·oracle
你不是我我3 分钟前
【Java 开发日记】MySQL 与 Redis 如何保证双写一致性?
数据库·redis·缓存
望获linux15 分钟前
【实时Linux实战系列】实时 Linux 在边缘计算网关中的应用
java·linux·服务器·前端·数据库·操作系统
fredinators26 分钟前
数据库专家
大数据·数据库
fredinators1 小时前
数据库flask访问
数据库·oracle·flask
向葭奔赴♡1 小时前
Spring Boot 分模块:从数据库到前端接口
数据库·spring boot·后端
JosieBook1 小时前
【数据库】时序数据库选型指南:在大数据与工业4.0时代,为何 Apache IoTDB 成为智慧之选?
大数据·数据库·时序数据库
程序员三明治1 小时前
详解Redis锁误删、原子性难题及Redisson加锁底层原理、WatchDog续约机制
java·数据库·redis·分布式锁·redisson·watchdog·看门狗
chenzhou__2 小时前
MYSQL学习笔记(个人)(第十五天)
linux·数据库·笔记·学习·mysql
一只自律的鸡2 小时前
【MySQL】第二章 基本的SELECT语句
数据库·mysql