MongoDB聚合操作符:$acos

$acos操作符返回一个值的反余弦。从MongoDB4.2版本开始支持。

语法

js 复制代码
{ $acos: <expression> }
  • $acos接受任何可被解析为值在-11之间的表达式,即:-1 <= value <= 1
  • $acos返回值以弧度为单位,使用$radiansToDegrees操作符可以把输出值由弧度转换为角度。
  • 缺省情况下$acos范围值为double,如果<expression>的值被解析为128-bit decimal$acos也会返回128-bit decimal

使用

如果参数被解析为null或不存在的字段,$acos返回null,如果参数为解析为NaN$acos返回NaN,如果参数解析的值越界,即value∉[-1,1]$acos将抛出错误。

参数举例 返回值
{ $acos: NaN } NaN
{ $acos: null } null
{ $acos : Infinity}{ $acos : -Infinity} 抛出异常: "errmsg" : "Failed to optimize pipeline :: caused by :: cannot apply $acos to -inf, value must in [-1,1]"

举例

反余弦度数

trigonometry集合包含下满的文档,存储了直角三角形的3条边长:

json 复制代码
{
  "_id" : ObjectId("5c50782193f833234ba90d85"),
  "side_a" : NumberDecimal("3"),
  "side_b" : NumberDecimal("4"),
  "hypotenuse" : NumberDecimal("5")
}

下面的聚合操作使用$acos表达式计算side_a相邻的角度,并将结果使用$addFields阶段将结果添加到输入文档。

js 复制代码
db.trigonometry.aggregate([
  {
    $addFields : {
      "angle_a" : {
        $radiansToDegrees : {
          $acos : {
            $divide : [ "$side_b", "$hypotenuse" ]
          }
        }
      }
    }
  }
])

$radiansToDegrees表达式将$acos返回的弧度转换为角度。

聚合后返回的结果如下:

json 复制代码
{
  "_id" : ObjectId("5c50782193f833234ba90d85"),
  "side_a" : NumberDecimal("3"),
  "side_b" : NumberDecimal("4"),
  "hypotenuse" : NumberDecimal("5"),
  "angle_a" : NumberDecimal("36.86989764584402129685561255909341")
}

因为side_bhypotenuse存储为128-bit decimal所以$acos的输出也是128-bit decimal

相关推荐
广州灵眸科技有限公司10 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
憧憬成为web高手13 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学13 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh15 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z1234567898616 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD16 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo16 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
TlSfoward17 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记17 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发17 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序