MongoDB $multiply 运算符

MongoDB $multiply 运算符 介绍

MongoDB 提供了多种算术表达式运算符。$multiply 运算符就是这些运算符之一。此运算符用于聚合管道阶段。该运算符用于将两个或多个数字相乘并返回结果。

MongoDB $multiply 运算符 语法

{ $multiply: [ < expression 1 >, < expression 2 >, ... < expression n > ] }  

要使用此运算符,您必须在数组中传递参数。

MongoDB $multiply 运算符 例子

在以下示例中,我们正在使用:

Database: Yiidian  
Collection: products  
Document: Ten documents that contain the details of each product  
>db.products.find().pretty()
{
    {
        "_id" : 1,
        "name" : "BlueBox",
        "x" : 10,
        "y" : 50,
        "billYear" : 2018
    }
    {
        "_id" : 2,
        "name" : "GreenBox",
        "x" : 10,
        "y" : 6,
        "billYear" : 2017
    }
    {
        "_id" : 3,
        "name" : "RedBox",
        "x" : 7,
        "y" : 9,
        "billYear" : 2018
    }
    {
        "_id" : 4,
        "name" : "WhiteBox",
        "x" : 2,
        "y" : 7,
        "z" : 4,
        "billYear" : 2019
    }
    {
        "_id" : 5,
        "name" : "BlueBox",
        "x" : 4,
        "y" : 12,
        "billYear" : 2020
    }
    {
        "_id" : 6,
        "name" : "BlueBox",
        "x" : 10,
        "y" : 5,
        "billYear" : 2021
    }
    {
        "_id" : 7,
        "name" : "WhiteBox",
        "x" : 5,
        "y" : 1,
        "z" : 45,
        "billYear" : 2019
    }
    {
        "_id" : 8,
        "name" : "GreenBox",
        "x" : -15,
        "y" : 5,
        "billYear" : 2018
    }
    {
        "_id" : 9,
        "name" : "BlackBox",
        "billDetail" : {
                               "x" : 45,
                               "y" : 56,
                              }
        "billYear" : 2021
    }
    {
        "_id" : 10,
        "name" : "WhiteBox",
        "x" : 4,
        "y" : 5,
        "z" : 6,
        "billYear" : 2020
    }
}

示例 1:使用 $multiply 运算符(对于两个数字)

在本例中,我们将乘以 BlueBox 中的“x”和“y”字段。

db.products.aggregate(  
 [  
   {$match: { name : "BlueBox"}},  
      {  
          $project:   
              {  
                name : 1,  
                x : 1,  
                y : 1,  
                answer : {$multiply: ["$x", "$y"]}  
               }  
      }  
 ]  
) 

输出结果为:

{
        "_id" : 1,
        "name" : "BlueBox",
        "x" : 10,
        "y" : 50,
        "answer" : 500,
}
{
        "_id" : 5,
        "name" : "BlueBox",
        "x" : 4,
        "y" : 12,
        "answer" : 48,
}
{
        "_id" : 6,
        "name" : "BlueBox",
        "x" : 10,
        "y" : 5,
        "answer" : 50,
}

示例 2:使用 $multiply 运算符(用于三个数字)

在此示例中,我们将在 WhiteBox 中将“x”、“y”和“z”字段相乘。

db.products.aggregate(  
 [  
   {$match: { name : "WhiteBox"}},  
      {  
          $project:   
              {  
                name : 1,  
                x : 1,  
                y : 1,  
                z : 1,  
                answer : {$multiply: ["$x", "$y", "$z" ]}  
               }  
      }  
 ]  
)  

输出结果为:

{
        "_id" : 4,
        "name" : "WhiteBox",
        "x" : 2,
        "y" : 7,
        "z" : 4,
        "answer" : 56
}
{
        "_id" : 7,
        "name" : "WhiteBox",
        "x" : 5,
        "y" : 1,
        "z" : 45,
        "answer" : 225
}
{
        "_id" : 10,
        "name" : "WhiteBox",
        "x" : 4,
        "y" : 5,
        "z" : 6,
        "answer" : 120
}

示例 3:在嵌入文档中使用 $multiply 运算符

在此示例中,我们将乘以 BlackBox 中的“billDetail.x”和“billDetail.y”字段。

db.products.aggregate(  
 [  
   {$match: { name : "BlackBox"}},  
      {  
          $project:   
              {  
                name : 1,  
                x : 1,  
                y : 1,  
                answer : {$multiply: ["$billDetail.x", "$billDetail.y"]}  
               }  
      }  
 ]  
)  

输出结果为:

{
        "_id" : 9,
        "name" : "BlackBox",
        "x" : 45,
        "y" : 56,
        "answer" : 2520
}

示例 4:将一个固定数字添加到数组中

如果用户想将该字段乘以某个数字,则用户可以这样做。在此示例中,我们将 RedBox 中的“x”字段乘以 10。

db.products.aggregate(  
 [  
   {$match: { name : "RedBox"}},  
      {  
          $project:   
              {  
                name : 1,  
                x : 1,  
                answer : { $multiply : [ "$x", 10 ]}  
               }  
      }  
 ]  
)  

输出结果为:

{
        "_id" : 3,
        "name" : "RedBox",
        "x" : 7,
        "answer" : 70,
}    

 

热门文章

优秀文章