nodeJS 操作MongoDB count方法的正确姿势

CentOS 7 安装 MongoDB:yum源配置、SELinux适配与systemd服务实战 MongoDB 是一款面向文档的 NoSQL 数据库,其在 RHEL/CentOS 系统中的部署不同于传统开源软件,核心难点在于官方 RPM 包不纳入系统默认仓库,需手动配置可信 YUM 源并完成 GPG 密钥导入。安装过程深度耦合 CentOS 7 的安全机制——SELinux 会拦截 mongod 对数据目录和端口的访问,firewalld 默认封锁 27017 端口,而 systemd 服务管理则要求严格遵循单元文件规范。技术价值体现在构建可审计、可复现、符合最小权限原则的生产级部署链路。典型应用场景 阅读详情

今天项目中遇到了需要通过MongoDB的count方法获取数值的情况,在网上查遍的各个论坛,然而都是轻描淡写一笔带过(其实就是扯淡),可能是MongoDB版本的原因db.collection("blogs").find({author: 'f', type: '1'}).count()根本不会返回数值 ,而db.blogs.find({author: 'f', type: '1'}).count() 是针对数据库的操作才可返回数值(比如终端里命令查询),在nodeJS里面只能用下面的方法:

官方文档表示:要通过count方法获取符合条件的记录数,得从count的回调方法中去取,而直接dbase.collection("blogs").find({***}).count()  返回的是cursor游标对象,并非数值类型;

dbase.collection("blogs").find({***}).count(function (err, result) {
    // 对返回值result做你想做的操作
});

拓展:

如果要通过count方法查询多次数值时,该怎么统一 返回呢?因为count方法里的回调是异步执行的....

下面?为你解除疑难杂症:

 let promise1 = new Promise((resolve, reject) => {
       dbase.collection("blogs").find({author: obj.author, type: '1'}).count(function (err, result) {
                if (err) {
                    reject();
                }
                data.type1 = result;
                resolve();
            });
});
let promise2 = new Promise((resolve, reject) => {
      dbase.collection("blogs").find({author: obj.author, type: '2'}).count(function (err, result) {
                if (err) {
                    reject();
                }
                data.type2 = result;
                resolve()
            });
});
let promise3 = new Promise((resolve, reject) => {
     dbase.collection("blogs").find({author: obj.author, type: '3'}).count(function (err, result) {
                if (err) {
                    reject();
                }
                data.type3 = result;
                resolve()
            });
 });
Promise.all([promise1, promise2, promise3]).then(function () {
        callback(null, data);//成功!返回查询的用户信息
 });

 

通过promise对象统一监听状态,最终统一返回。。。

 

NodeJs操作MongoDB教程之分页功能以及常见问题 一,方法介绍  1,聚合操作之count count()方法可以查询统计符合条件的集合的总数 1 db.User.count() // 此方法等价于 db.User.find().count() 在分布式集合中,会出现计算错误的情况,这个时候推荐使用aggregate;  2,find() 方法以非结构化的方式来显示所有文档。 1 db.User.find();//相当于:select* from User; 3,exec() 方法用于检索字符串中的正则表达式的匹配。(javascript方法) 4,sort() 方法对数据进行排序,sort() 方法可以通过 立即下载

相关推荐

Zabbix 简介、优缺点、基础原理

(8条消息) Zabbix 的基础概念、原理和架构_Lee木木的博客-优快云博客_zabbix架构类型Zabbix 的基础概念、原理和架构_Lee木木的博客-优快云博客_zabbix架构类型 --------------------------------------------------------------------------------------------------------------------------- 一、Zabbix 简介 Zabbix是由A...

weixin_50196615的博客 2037

Nodejs---MongoDb的使用方式

MongoDB的使用方式

weixin_68658847的博客 903

交通流预测爬坑记(一):交通流数据集,原始数据

常用的交通流数据集,持续更新~~

K_first的博客 4万+

node.js - MongoDB count()获取表长度,解决Promise {<pending>}

自己一直想要用node操作db.count()去获取某个表的长度,奈何用collection.find().count()却又一直获取不到,查看了许多文章,都没有什么详细的解释,官方文档也是吧啦吧啦一大堆。。。 collection.find().count()获取的一直为Promise { <pending> },需要用Promise去解决,博客中也进行了详细解释。最后自己也认真的看了看count(),简单的总结了一下。

Ahuiyo的博客 2589

Spark入门:从零到能跑的实战教程

Spark 的强大在于它统一了大数据处理的多种场景,从批处理到流处理,从 SQL 到机器学习。对于初学者来说,理解 Spark 的核心理念——内存计算和分布式抽象,是最重要的一步。接着,学会用 PySpark 搭建环境,能读数据、能写 SQL,基本上就入门了。剩下的路,就是通过实战去加深理解。写到这里,相信你对 Spark 已经有了一个比较完整的认识。下一步,不妨自己动手写几个 PySpark 脚本,跑一跑日志数据,或者尝试用 Spark SQL 做一个统计。

Morpheon的博客 1369

esxi8.0.3如何添加USB外置硬盘

本文介绍了在ESXi系统中配置外置USB硬盘作为数据存储的完整步骤:1)通过SSH禁用USB仲裁服务并关闭自启;2)识别已连接的USB硬盘设备路径;3)使用partedUtil创建GPT分区表并计算扇区范围;4)设置VMFS6分区并格式化。关键命令包括停止usbarbitrator服务、partedUtil分区操作以及vmkfstools格式化命令。整个过程需通过SSH执行,最终将USB硬盘配置为名为"USB_Datastore"的VMFS6存储设备。

qq_41683719的博客 1544

【Node.js】第九章 数据库

1. 连接:打开MySQL Workbench连接数据库、输入密码2. 界面组成部分:3. 创建数据库4. 创建数据表5. 向数据表插入数据。

weixin_41950078的博客 1253

Kettle入门指南:从安装到数据转换实战

本文提供Kettle(Pentaho Data Integration)的完整入门指南,涵盖从Java环境安装、软件配置到核心概念(转换与作业)的详细解析。通过实战案例,手把手教你如何将文本文件数据导出到Excel,并连接MySQL数据库进行数据导入,帮助你快速掌握这一强大ETL工具的基本使用,实现高效数据搬运与转换。

weixin_29266647的博客 448

ndoejs+mongodb 开发3:count,统计条数

/**auother : zhz * mongodb : count函数 ,统计条数 * selecter: 筛选条件 * */ HelperMongo.prototype.mGcount = function(collectionName,selecter,callback) { var self = this; var reqId = _reqId++; _log

workassb的博客 624

①Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网

MS-A1-50X1系列作为MODBUS TCP通信的服务器进行动作。可通过MODBUS TCP 通信,将 MS-A1-50X1 系列产品通过 RS485 采集的仪器仪表之类的值作为通信数 据输出到 PLC,上位机等。

2401_89571741的博客 1398

python 编程 安卓脚本_详解基于Android的Appium+Python自动化脚本编写

1.AppiumAppium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试, 它使用WebDriver协议驱动iOS,Android和Windows应用程序。通过Appium,我们可以模拟点击和屏幕的滑动,可以获取元素的id和classname,还可以根据操作生成相关的脚本代码。下面开始Appium的配置。appPackage和APPActivity的获取任意下载一个app解压...

weixin_39523625的博客 2928

mongodb查询

1 ) . 大于,小于,大于或等于,小于或等于 $gt:大于 $lt:小于 $gte:大于或等于 $lte:小于或等于 例子: db.collection.find({ "field" : { $gt: value } } ); // greater than : field > value db.collection.find({ "field" : { $lt: va

u010317990的专栏 1300

Unity UI适配实战:从Canvas Scaler到主流游戏适配方案解析

本文深入解析Unity UI适配的核心技术,重点介绍Canvas Scaler组件的关键参数如Reference Resolution和Screen Match Mode,并提供主流游戏适配方案实战分析。通过九宫格拉伸、动态调整等技巧,帮助开发者解决多设备适配难题,提升游戏UI在不同分辨率下的表现。

weixin_29001419的博客 971

NodeJs操作MongoDB之分页功能与常见问题

NodeJs操作MongoDB之分页功能与常见问题一,方法介绍 1,聚合操作之count count()方法可以查询统计符合条件的集合的总数 1 db.User.count() // 此方法等价于 db.User.find().count()在分布式集合中,会出现计算错误的情况,这个时候推荐使用aggregate; 2,find() 方法以非结构化的方式...

测试0901-1 854

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

nodejs系列之七——nodejs与mongoDB

原文: http://ramonblog.cloudfoundry.com/blog/4fd4536715d8f0d91e000002 参考其它内容请看本blog中的nodejs系列提纲 更多关于MongoDB的NodeJS驱动内容请参考MongoDB NodeJS Driver 简介 No-SQL的一篇比较详细的中文介绍来自于我自然的博客。而Mongo

cike110120的专栏 2万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Nodejs操作Mongodb增删查改

编写一个测试的程序:  1 var mongodb = require('mongodb');  2 var server = new mongodb.Server('localhost',27017,{auto_reconnect:true});  3 var db = new mongodb.Db('mydb',server,{safe:true});  4 db.open

qq_38886614的博客 449

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

nodejs实现分页功能

find 方法修改 db.collection(collectionName).find(json1,{fields:attr}).skip(slipNum).limit(pageSize); 2.封装 count 方法 var result=db.collection(collection).count(json);//nodejs封装mongodb知识 result.then(data=>{ resolve(data); } ``` 3.数据结合 jqPaginator 实现分页 ht.

weixin_42929948的博客 3135

通过nodejs对mongodb的写入和查询性能进行的测试

近期对mongodb的写入和查询性能做了一个分析,前提是各个接口独立测试,没有进行复合测试,即读写接口同时测试等情况。 总结了以下几点内容: 1.从数据上显示写入或者编辑数据的性能不受数据条数影响,平均时间在15-20ms左右。 2.数据超30条后,复杂的语句,例如带模糊查询,范围查询和排序操作耗时尤为明显,即使建了复合索引,性能提升也是有限的。删除上面提到的查询后,性能明显提升。 优化思路:数据量大时尽量使用精准查询,避免使用以上查询,但是有时业务需要也是没有办法。如果耗时太久的接口,可以采用定期转移

梁小Wai的技术博客 762

MongoDB说明

文章目录查询时间显示全文索引创建全文索引使用全文索引查询使用explain()工具查看查询分析导入导出索引复合索引索引的参数账户权限 查询时间显示 explain() 在查询语句最后加入explain() db.user.find({"x":1}).explain() 其中查询结果中 millis 就是查询时间,单位毫秒 全文索引 创建全文索引 - db.article.ensureIn...

w54a3teg64c7bd的博客 239

如何快速运行koa-react-full-example:从MongoDB安装到首次登录的5步完整教程

**koa-react-full-example** 是一个使用 Koa、React、Passport、Mongoose、Webpack 和 Mocha 搭建的全栈示例项目,内置用户注册/登录与一个可读写 MongoDB 的计数器应用。本教程带你完成 **Koa + React 全栈环境搭建**:从安装 MongoDB、启动双终端,到首次注册登录成功,只需 5 步,新手也能一次跑通! ## 5分

gitblog_00760的博客 415

MongoDB Node.js驱动中的cursor对象

    在使用MongoDB Node.js驱动程序在MongoDB中执行某些操作时,结果以Cursor(游标)对象返回。Cursor对象作为一个可迭代的可在数据库中访问一组对象的游标。例如,当你使用find()时,实际的文档不在回调函数中返回;相反,返回的是cursor对象。然后,你可以使用该Curosr对象来读取结果的条目。    因为Cursor对象是可迭代的,所以在内部保持一个当前位置的索...

小白菜的博客 2159

Node.js--》如何在Node.js中操作MySQL

当用户执行了删除的动作时,我们并没有执行DELETE语句把数据删除掉,而是执行了UPDATE语句,将这条数据对应的status字段标记为删除即可。用于从表中查询数据。:在传统型数据库中,数据的组织结构分为数据库(database)、数据表(table)、数据行(row)、字段(field)这4大部分组成。不同的数据,要存储到数据库的不同表中,例如:用户数据存储到users 表中,图书数据存储到 books表中。因为 id 具有唯一性,即使你把某条id的记录删掉,它的id下一条数据是用不了的,只能自增。

ztK63LrD的博客 1153

MongoDB Query API 实战:从 CRUD 到聚合索引的工程化指南

MongoDB Query API 是面向文档数据库的核心交互接口,基于 BSON 数据模型实现灵活嵌套与动态 schema 支持,区别于传统 SQL 的表结构约束。其查询语法贴近自然逻辑,支持流式 cursor、链式聚合与精准索引控制,技术价值体现在开发效率提升、迭代响应加速及复杂数据建模能力增强。典型应用场景包括用户画像构建、电商 SKU 管理、日志分析与实时报表生成。本文聚焦 MongoDB Query API 在真实生产环境中的四大关键实践维度:安全可靠的 CRUD 操作规范、高精度多条件过滤策略、

weixin_34034670的博客 525

node.js操作mongodb数据库(增删查改分页)

连接到数据库 var mongo = require('mongodb'), Server = mongo.Server, Db = mongo.Db; var server = new Server('localhost', 27017, {auto_reconnect: true}); var db = new Db('foo', server); db.open(functio

我的专栏 2601
上一篇: javascript数组常用方法详解
下一篇: 布莱德皮特
大叔0o0
博客等级 码龄10年 31粉丝 52原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值