MongoDB聚合运算符$toBool详解
MongoDB聚合运算符:$toBool
$toBool
聚合运算符将指定的值转换为布尔类型boolean。
语法
{ $toBool: <expression> }
$toBool
接受任何有效的表达式。
$toBool
是$convert
表达式的简写形式:
{ $convert: { input: <expression>, to: "bool" } }
使用
下表列出了可转换为布尔值的类型:
输入类型 | 规则 |
---|---|
Array | 返回ture |
Binary data | Returns true |
Boolean | 直接返回 |
Code | 返回true |
Date | 返回true |
Decimal | 0返回false,非0返回true |
Double | 0返回false,非0返回true |
Integer | 0返回false,非0返回true |
JavaScript | 返回true |
Long | 0返回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中的常用操作$set、$unset和$inc示例详解
在MongoDB中,$set操作符用于更新文档中的字段值,它允许更新指定的字段,而不必更新整个文档,这篇文章主要介绍了MongoDB中的常用操作$set、$unset和$inc示例详解,需要的朋友可以参考下2023-12-12基于Morphia实现MongoDB按小时、按天聚合操作方法
这篇文章主要介绍了基于Morphia实现MongoDB按小时、按天聚合操作 ,实现思路是启动定时任务,对各用户的设备状态数据分别按照小时以及天进行聚合,并存储进数据库中供用户后续查询.需要的朋友可以参考下2019-07-07Windows或Linux系统中备份和恢复MongoDB数据的教程
不得不说MongoDB的备份回复操作对比其他数据库来说真的算得上是简便的,无论是在Windows的命令行中或者是Linux里的脚本执行,这里我们就来看一下Windows或Linux系统中备份和恢复MongoDB数据的教程2016-06-06
最新评论