MongoDB聚合运算符$toBool详解

 更新时间:2024年05月05日 11:49:30   作者:原子星  
$toBool聚合运算符将指定的值转换为布尔类型boolean,这篇文章主要介绍了MongoDB聚合运算符:$toBool的相关知识,需要的朋友可以参考下

MongoDB聚合运算符:$toBool

$toBool聚合运算符将指定的值转换为布尔类型boolean。

语法

{
   $toBool: <expression>
}

$toBool接受任何有效的表达式。

$toBool$convert表达式的简写形式:

{ $convert: { input: <expression>, to: "bool" } }

使用

下表列出了可转换为布尔值的类型:

输入类型规则
Array返回ture
Binary dataReturns true
Boolean直接返回
Code返回true
Date返回true
Decimal0返回false,非0返回true
Double0返回false,非0返回true
Integer0返回false,非0返回true
JavaScript返回true
Long0返回false,非0返回true
MaxKey返回true
MinKey返回true
Null返回null
Object返回true
ObjectId返回true
Regular expression返回true
String返回true
Timestamp返回true

下表列出了一些转换为布尔值的示例:

示例结果
{$toBool: false}false
{$toBool: 1.99999}true
{$toBool: NumberDecimal("5")}true
{$toBool: NumberDecimal("0")}false
{$toBool: 100}true
{$toBool: ISODate("2018-03-26T04:38:28.044Z")}true
{$toBool: "false"}true
{$toBool: ""}true
{$toBool: null}null

举例

使用下面的脚本创建orders集合:

db.orders.insertMany( [
   { _id: 1, item: "apple",  qty: 5, shipped: true },
   { _id: 2, item: "pie",  qty: 10, shipped: 0  },
   { _id: 3, item: "ice cream", shipped: 1 },
   { _id: 4, item: "almonds", qty: 2, shipped: "true" },
   { _id: 5, item: "pecans", shipped: "false" },  //注意:所有的字符串都转换为true
   { _id: 6, item: "nougat", shipped: ""  }       //注意:所有的字符串都转换为true
] )

下面是对订单集合orders的聚合操作,先将已发货的订单shipped转换为布尔值,然后再查找未发货的订单:

//定义shippedConversionStage阶段,添加转换后的发货标志字段`convertedShippedFlag`
//因为所有的字符串都会被转换为true,所以要对字符串"false"做个特殊处理
shippedConversionStage = {
   $addFields: {
      convertedShippedFlag: {
         $switch: {
            branches: [
              { case: { $eq: [ "$shipped", "false" ] }, then: false } ,
              { case: { $eq: [ "$shipped", "" ] }, then: false }
            ],
            default: { $toBool: "$shipped" }
        }
      }
   }
};
// 定义文档过滤阶段,过滤出没有发货的订单
unshippedMatchStage = {
   $match: { "convertedShippedFlag": false }
};
db.orders.aggregate( [
  shippedConversionStage,
  unshippedMatchStage
] )

执行的结果为:

{ "_id" : 2, "item" : "pie", "qty" : 10, "shipped" : 0, "convertedShippedFlag" : false }
{ "_id" : 5, "item" : "pecans", "shipped" : "false", "convertedShippedFlag" : false }
{ "_id" : 6, "item" : "nougat", "shipped" : "", "convertedShippedFlag" : false }

到此这篇关于MongoDB聚合运算符:$toBool的文章就介绍到这了,更多相关MongoDB聚合运算符内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解mongodb 主从配置

    详解mongodb 主从配置

    我研究过的nosql,memcache,redis,mongodb都是支持分布式的,生产环境中用过memcache,redis,性能稳定。mongodb是最接近关系型数据库的,不用花很多时间去构建数据库模型,将来我会用mongodb,看一下主从配置
    2014-07-07
  • 解决MongoDB占用内存过大频繁死机的方法详解

    解决MongoDB占用内存过大频繁死机的方法详解

    这篇文章主要介绍了解决MongoDB占用内存过大频繁死机的方法详解,需要的朋友可以参考下
    2020-02-02
  • CentOS7下安装MongoDB数据库过程

    CentOS7下安装MongoDB数据库过程

    大家好,本篇文章主要讲的是CentOS7下安装MongoDB数据库过程,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • MongoDB数据查询方法干货篇

    MongoDB数据查询方法干货篇

    查询操作在我们日常操作数据库的时候是必不可少的一部分,最近有些空闲时间,所有就将MongoDB数据查询的一些方法技巧总结了处理,这篇文章主要介绍了MongoDB数据查询的相关资料,需要的朋友可以参考借鉴,一起来看看吧。
    2017-05-05
  • mongoDB分页的两种方法(图例)

    mongoDB分页的两种方法(图例)

    mongoDB分页的两种方法,mongoDB的分页查询是通过limit(),skip(),sort()这三个函数组合进行分页查询的。
    2013-11-11
  • MongoDB中的常用操作$set、$unset和$inc示例详解

    MongoDB中的常用操作$set、$unset和$inc示例详解

    在MongoDB中,$set操作符用于更新文档中的字段值,它允许更新指定的字段,而不必更新整个文档,这篇文章主要介绍了MongoDB中的常用操作$set、$unset和$inc示例详解,需要的朋友可以参考下
    2023-12-12
  • 基于Morphia实现MongoDB按小时、按天聚合操作方法

    基于Morphia实现MongoDB按小时、按天聚合操作方法

    这篇文章主要介绍了基于Morphia实现MongoDB按小时、按天聚合操作 ,实现思路是启动定时任务,对各用户的设备状态数据分别按照小时以及天进行聚合,并存储进数据库中供用户后续查询.需要的朋友可以参考下
    2019-07-07
  • MongoDB的分片集群基本配置教程

    MongoDB的分片集群基本配置教程

    MongoDB拥有经典的Sharding架构能将数据分散存储在数个服务器上以作集群,这里我们就来看一下MongoDB的分片集群基本配置教程:
    2016-07-07
  • 一文带你深入掌握MongoDB查询分析的关键技巧

    一文带你深入掌握MongoDB查询分析的关键技巧

    MongoDB 是一款灵活且可扩展的NoSQL数据库,为了提高其性能,我们可以采取一些优化技巧,这篇文章主要给大家介绍了关于MongoDB查询分析关键技巧的相关资料,需要的朋友可以参考下
    2024-06-06
  • Windows或Linux系统中备份和恢复MongoDB数据的教程

    Windows或Linux系统中备份和恢复MongoDB数据的教程

    不得不说MongoDB的备份回复操作对比其他数据库来说真的算得上是简便的,无论是在Windows的命令行中或者是Linux里的脚本执行,这里我们就来看一下Windows或Linux系统中备份和恢复MongoDB数据的教程
    2016-06-06

最新评论