MongoDB $cmp运算符

MongoDB $cmp运算符

MongoDB中的$cmp运算符是什么

MongoDB提供了各种聚合管道运算符。cmp运算符是其中之一。cmp运算符用于比较两个值或类型,并返回结果。

根据以下条件,它返回以下结果:

  • 如果两个值相等,则返回0。
  • 如果第一个值大于第二个值,则返回1。
  • 如果第一个值小于第二个值,则返回-1。

$log10运算符的语法

{ $cmp : [ < expression 1 >, < expression 2 > ] }

示例

假设我们有一个包含以下文档的产品集合。

{
        {
         "_id" : 1, 
         "name" : "rectangle",
         "length" : 11,
         "breath" : 10
        }
        {
         "_id" : 2, 
         "name" : "square",
         "length" : 10,
         "breath" : 10  
        }
        {
         "_id" : 3, 
         "name" : "rectangle",
         "length" : 14,
         "breath" : 16  
        }
        {
         "_id" : 4, 
         "name" : "square",
         "length" : 6,
         "breath" : 6
        }
        {
         "_id" : 5, 
         "name" : "rectangle",
         "length" : 11,
         "breath" : 16
        }
}

示例1:使用$cmp运算符

在这个示例中,我们将使用$cmp运算符比较长度和宽度字段。

db.products.aggregate (
  [
    { project :           {               _id : 1,
               name : 1,
               length : 1,
               breadth : 1,
               result: {cmp : [ "length", "breadth" ] }
           }
    }
  ]
)

输出:

{
         "_id" : 1, 
         "name" : "rectangle",
         "length" : 11,
         "breath" : 10,
         "result" : 1
}
{
         "_id" : 2, 
         "name" : "square",
         "length" : 10,
         "breath" : 10,
         "result" : 0
}
{
         "_id" : 3, 
         "name" : "rectangle",
         "length" : 14,
         "breath" : 16,
         "result" : -1
}
{
         "_id" : 4, 
         "name" : "square",
         "length" : 6,
         "breath" : 6,
         "result" : 0
}
{
         "_id" : 5, 
         "name" : "rectangle",
         "length" : 11,
         "breath" : 16,
         "result" : -1
}   

假设我们将以下文件添加到我们的集合中:

{
        {
         "_id" : 6, 
         "name" : "rectangle",
         "length" : null,
         "breath" : 10
        }
        {
         "_id" : 7, 
         "name" : "square",
         "length" : 10,
         "breath" : null    
        }
        {
         "_id" : 8, 
         "name" : "rectangle",
         "length" : null,
         "breath" : null    
        }
}

示例2:比较null值

db.products.aggregate (
  [
    { match : {_id : {nin : [ 1, 2, 3, 4, 5 ] } } }, 
       { project :           {               _id : 1,
               name : 1,
               length : 1,
               breadth : 1,
               result: {cmp : [ "length", "breadth" ] }
           }
    }
  ]
)

输出:

{
         "_id" : 6, 
         "name" : "rectangle",
         "length" : null,
         "breath" : 10,
         "result" : -1
}
{
         "_id" : 7, 
         "name" : "square",
         "length" : 10,
         "breath" : null,
         "result" : 1
}
{
         "_id" : 8, 
         "name" : "rectangle",
         "length" : null,
         "breath" : null,
         "result" : 0
}    

假设我们将以下文件添加到我们的集合中:

{
         "_id" : 9, 
         "name" : "item_1",
         "a" : ISODate("2020-05-09T23:30:15.100Z"),
         "b" : 10
}
{
         "_id" : 10, 
         "name" : "item_2",
         "a" : 10,
         "b" : ISODate("2012-11-18T04:00:20.112Z")  
}
{
         "_id" : 11, 
         "name" : "item_3",
         "a" : ISODate("2018-11-14T04:00:20.112Z"),
         "b" : ISODate("2015-10-07T04:00:20.112Z")  
}

示例三:比较不同类型

db.products.aggregate (
  [
    { match : {_id : {nin : [ 1, 2, 3, 4, 5, 6, 7, 8 ] } } }, 
       { project :           {               _id : 1,
               name : 1,
               a : 1,
               b : 1,
               result: {cmp : [ "a", "b" ] }
           }
    }
  ]
)

输出:

{
         "_id" : 9, 
         "name" : "item_1",
         "a" : ISODate("2020-05-09T23:30:15.100Z"),
         "b" : 10,
         "result" : 1
}
{
         "_id" : 10, 
         "name" : "item_2",
         "a" : 10,
         "b" : ISODate("2012-11-18T04:00:20.112Z"), 
         "result" : -1
}
{
         "_id" : 11, 
         "name" : "item_3",
         "a" : ISODate("2018-11-14T04:00:20.112Z"),
         "b" : ISODate("2015-10-07T04:00:20.112Z"),
         "result" : 1
}   

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程