MongoDB $sqrt运算符

MongoDB $sqrt运算符

MongoDB中的$sqrt运算符是什么

MongoDB提供了各种算术表达式运算符,$sqrt运算符就是其中之一。$sqrt运算符用于计算正数的平方根,并将结果返回为double类型。该运算符也可用于聚合管道阶段中。

$sqrt运算符的语法

{ $sqrt: < number > }

< number> 可以是任何有效数字,只要它能解析为非负数字。

重要提示:

  1. 如果数字指向一个缺失的字段或者null,$sqrt 运算符返回 null。
  2. 如果数字是 NaN,$sqrt 运算符返回 NaN。
S.No Example Output
1. { $sqrt: 4 } 2
2. { $sqrt: 15 } 3.872983346207417
3. { $sqrt: -2 } Error
4. { $sqrt: null} Null

示例:

假设我们有一组具有以下文档的项目。

>db.items.find().pretty()
{
        {
         "_id" : 1, 
         "item_name" : "bat",
         "quantity" : 4
        }
        {
         "_id" : 2, 
         "item_name" : "ball",
         "quantity" : null
        }
        {
         "_id" : 3, 
         "item_name" : "box",
         "details" : { 
                           "length" : 20,
                           "width" : 25
                          }
        }
        {
         "_id" : 4, 
         "item_name" : "ball",
         "quantity" : null
        }
        {
         "_id" : 5, 
         "item_name" : "bat",
         "quantity" : 20
        }
        {
         "_id" : 6, 
         "item_name" : "toy",
         "quantity" : -10
        }
        {
         "_id" : 7, 
         "item_name" : "bat",
         "quantity" : 75
        }
        {
         "_id" : 8, 
         "item_name" : "bat",
         "quantity" : 45
        }
}

示例1:使用$sqrt运算符找到任意字段的平方根

在此示例中,我们使用$sqrt运算符来找到”quantity”字段的平方根。

db.items.aggregate(
 [
   {match: { item_name : "bat"}},
      {project: 
              {
                item_name : 1,
                quantity : 1,
                result : {sqrt: "quantity" }
               }
      }
 ]
)

输出:

{
         "_id" : 1, 
         "item_name" : "bat",
         "quantity" : 4,
         "result" : 2
}
{
         "_id" : 5, 
         "item_name" : "bat",
         "quantity" : 20,
         "result" : 4.472135954999579
}
{
         "_id" : 7, 
         "item_name" : "bat",
         "quantity" : 75,
         "result" : 8.660254037844386
}
{
         "_id" : 8, 
         "item_name" : "bat",
         "quantity" : 45,
         "result" : 6.708203932499369
}

示例2:字段的负值

$sqrt运算符只支持大于等于0的正数。如果参数的值为负数,会出现错误。让我们对toy documents应用$sqrt运算符。

db.items.aggregate(
 [
   {match: { item_name : "toy"}},
      {project: 
              {
                item_name : 1,
                quantity : 1,
                result : {sqrt: "quantity" }
               }
      }
 ]
)

输出:

uncaught exception: Error: command failed: {
    "ok": 0,
    "errmsg": "$sqrt's argument must be greater than or equal to 0",
    "code": 28714,
    "codeName": "Location28714"
} : aggregate failed:
_getErrorWithCode@src/mongo/shell/utils.js : 25 : 13
doassert@src/mongo/shell/assert.js : 18 : 14
_assertCommandWorked@src/mongo/shell/assert.js : 618 : 17
assert.commandWorked@src/mongo/shell/assert.js : 708 : 16
DB.prototype._runAggregate@src/mongo/shell/db.js : 266 :5
DBCollection.prototype.aggregate@src/mongo/shell/collection.js : 1046 : 12
@(shell) : 1 : 1

示例3: 字段的空值

如果字段的值为空,sqrt运算符将返回null。让我们对球型文档应用sqrt运算符。

db.items.aggregate(
 [
   {match: { item_name : "ball"}},
      {project: 
              {
                item_name : 1,
                quantity : 1,
                result : {sqrt: "quantity" }
               }
      }
 ]
)

输出:

{
         "_id" : 2, 
         "item_name" : "ball",
         "quantity" : null,
         "result" : null
}
{
         "_id" : 4, 
         "item_name" : "ball",
         "quantity" : null,
         "result" : null
}

示例4:不存在的字段

如果参数指向一个缺失的字段,sqrt操作符将返回null。在这个示例中,我们使用sqrt操作符找到”price”字段的平方根。

db.items.aggregate(
 [
   {match: { _id : 5}},
      {project: 
              {
                item_name : 1,
                quantity : 1,
                result : {sqrt: "price" }
               }
      }
 ]
)

输出:

{
         "_id" : 5, 
         "item_name" : "bat",
         "quantity" : 20,
         "result" : null
}

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程