$sqrt (aggregation)

On this page本页内容

Definition定义

$sqrt

Calculates the square root of a positive number and returns the result as a double.计算正数的平方根,并以双精度形式返回结果。

$sqrt has the following syntax:语法如下:

{ $sqrt: <number> }

The argument can be any valid expression as long as it resolves to a non-negative number. 参数可以是任何有效的表达式,只要它解析为非负数值。For more information on expressions, see Expressions.有关表达式的详细信息,请参阅表达式

Behavior行为

If the argument resolves to a value of null or refers to a field that is missing, $sqrt returns null. 如果参数解析为null值或引用缺少的字段,$sqrt将返回nullIf the argument resolves to NaN, $sqrt returns NaN.如果参数解析为NaN$sqrt将返回NaN

$sqrt errors on negative numbers.对负数发生错误。

Example示例Results结果
{ $sqrt: 25 }5
{ $sqrt: 30 }5.477225575051661
{ $sqrt: null }null

Example示例

A collection points contains the following documents:集合points包含以下文档:

{ _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} }

The following example uses $sqrt to calculate the distance between p1 and p2:以下示例使用$sqrt计算p1p2之间的距离:

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

The operation returns the following results:该操作返回以下结果:

{ "_id" : 1, "distance" : 5.830951894845301 }
{ "_id" : 2, "distance" : 5 }
{ "_id" : 3, "distance" : 4 }
←  $split (aggregation)$stdDevPop (aggregation) →