MongoDB_条件操作符

本文介绍了一个使用Node.js连接MongoDB数据库并执行复杂查询的例子,包括区间查询等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<pre name="code" class="javascript">'use strict';

// connect MongoDB
var mongodb = require("mongodb");
var server = new mongodb.Server("127.0.0.1", 27017, {auto_reconnect:true});
var client = new mongodb.Db("testDB", server, {w:1});

client.open(function(err, db){
    if (err)
    {
        throw err;
    }
    else
    {
        db.collection("testTable", {safe:true}, function(err, collection){
            if (err)
            {
                throw err;
            }
            else
            {
                // 全部查找
                collection.find().toArray(function(err, result){
                    //JsonLog(result);
                });

                // 大于操作符 $gt查找
                //collection.find({age:{$gt:10}}).toArray(function(err, result){
                //    JsonLog(result);
                //});

                // 大于等于操作符 $gte查找
                //collection.find({age:{$gte:33}}).toArray(function(err, result){
                //    JsonLog(result);
                //});

                // 小于操作符 $lt查找
                //collection.find({age:{$lt:33}}).toArray(function(err, result){
                //    JsonLog(result);
                //});

                // 小于等于操作符 $lte查找
                //collection.find({age:{$lte:33}}).toArray(function(err, result){
                //    JsonLog(result);
                //});

                // 不等于操作符 $ne查找
                //collection.find({age:{$ne:33}}).toArray(function(err, result){
                //    JsonLog(result);
                //});

                // 大于并且小于操作符 $gt和$lt在一个区间联合查找
                collection.find({age:{$gt:20, $lt:50}}).toArray(function(err, result){
                    JsonLog(result);
                });
            }
        });
    }
});



### MongoDB 聚合操作符列表 MongoDB 提供了一系列强大的聚合操作符,用于执行各种数据转换和分析任务。这些操作符可以在聚合管道的同阶段使用,以实现复杂的查询需求。以下是常见的 MongoDB 聚合操作符分类及其功能概述: --- #### **1. 条件操作符** 条件操作符允许基于布尔表达式的结果进行分支判断。 - `$cond`: 根据条件返回同的值[^4]。 - `$ifNull`: 如果字段为空或存在,则返回替代值[^4]。 示例: ```javascript { $project: { priceCategory: { $cond: [ { $gte: ["$price", 20] }, "High", "Low" ] } } } ``` --- #### **2. 数组操作符** 数组操作符用于处理数组类型的字段。 - `$addFields`: 添加新字段或将现有字段更新为数组[^4]。 - `$unwind`: 将数组拆分为单独的文档[^4]。 - `$filter`: 对数组中的元素应用过滤器[^4]。 - `$size`: 返回数组的长度[^4]。 示例: ```javascript { $unwind: "$tags" } ``` --- #### **3. 组合计数操作符** 这些操作符通常与 `$group` 阶段一起使用,以便对数据进行汇总统计。 - `$sum`: 计算数值总和[^4]。 - `$avg`: 计算平均值。 - `$min`, `$max`: 获取最小值或最大值。 - `$push`, `$addToSet`: 收集数组中的唯一值或全部值[^4]。 示例: ```javascript { $group: { _id: null, totalQuantity: { $sum: "$quantity" } } } ``` --- #### **4. 文档操作符** 用于修改或提取文档的内容。 - `$mergeObjects`: 合并两个或多个文档[^4]。 - `$replaceRoot`: 替换根文档。 - `$setUnion`: 找到两个集合的联合。 示例: ```javascript { $replaceRoot: { newRoot: "$details" } } ``` --- #### **5. 数学运算操作符** 支持基本的数学运算以及更高级的数据变换。 - `$abs`, `$ceil`, `$floor`, `$ln`, `$log`, `$pow`, `$sqrt`: 基本数学函数。 - `$mod`: 求模运算[^4]。 - `$subtract`, `$multiply`, `$divide`, `$add`: 加减乘除运算。 示例: ```javascript { $project: { discountedPrice: { $multiply: [ "$price", 0.9 ] } } } ``` --- #### **6. 日期操作符** 专门针对日期类型字段的操作。 - `$dateToString`: 将日期格式化为字符串。 - `$year`, `$month`, `$dayOfMonth`: 提取日期组件。 - `$isoWeekDay`, `$isoYear`: ISO 时间标准下的日期解析。 示例: ```javascript { $project: { yearSold: { $year: "$saleDate" } } } ``` --- #### **7. 字符串操作符** 用于字符串的拼接、截断和其他常见操作。 - `$concat`: 拼接字符串[^4]。 - `$substrBytes`, `$substrCP`: 截取子字符串。 - `$toLower`, `$toUpper`: 修改大小写。 示例: ```javascript { $project: { fullName: { $concat: [ "$firstName", " ", "$lastName" ] } } } ``` --- #### **8. 类型转换操作符** 帮助在同数据类型之间切换。 - `$convert`, `$toString`, `$toInt`, `$toDouble`: 数据类型强制转换。 - `$isArray`: 判断某个字段是否为数组。 示例: ```javascript { $project: { ageString: { $toString: "$age" } } } ``` --- #### **9. 特殊用途操作符** 一些特殊场景下使用的操作符。 - `$literal`: 输出字面量而非变量。 - `$meta`: 处理元数据(如文本分数)[^4]。 示例: ```javascript { $match: { score: { $meta: "textScore" } } } ``` --- ### 总结 以上列举了 MongoDB 中常用的聚合操作符类别及具体实例。每种操作符都有其独特的应用场景,合理搭配它们能够完成高度定制化的数据分析任务。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值