Node.js 使用 MongoDB 的 ObjectId 作为查询条件
当往MongoDB中插入一条数据时,会自动生成ObjectId作为数据的主键。 那么如何通过ObjectId来做数据的唯一查询呢?
在MongoDB中插入一条数据
在MongoDB中插入一条如下结构的数据:
{ _id: 5d6a32389c825e24106624e4, title: 'GitHub 上有什么好玩的项目', content: '上个月有水友私信问我,GitHub 上有没有比较好玩的项目可以推荐?我跟他说:"有,过两天我整理一下"。\n' + '\n' + '然而,一个月过去了,我把这件事情忘了精光,直至他昨天提醒我才记起2_05.png。\n', creation: 2019-08-31T08:39:20.384Z }
其中,上述_id的值“5d6a32389c825e24106624e4”,是MongoDB自动分配的。
使用 MongoDB 的 ObjectId 作为查询条件
须知,_id的值“5d6a32389c825e24106624e4”并非是字符串,而是ObjectId对象类型。因此,如下查询是行不通的:
// 查询指定文档 const findNews = function (db, newsId, callback) { // 获取集合 const news = db.collection('news'); // 查询指定文档 news.findOne({_id: newsId},function (err, result) { if (err) { console.error('error end: ' + err.stack); return; } console.log("查询指定文档,响应结果是:"); console.log(result); callback(result); }); }
需将上述newsId转为 ObjectId对象类型。怎么做呢?做法参考如下:
const ObjectId = require('mongodb').ObjectId; // 查询指定文档 const findNews = function (db, newsId, callback) { // 获取集合 const news = db.collection('news'); // 查询指定文档 news.findOne({_id: ObjectId(newsId)},function (err, result) { if (err) { console.error('error end: ' + err.stack); return; } console.log("查询指定文档,响应结果是:"); console.log(result); callback(result); }); }
其中,require('mongodb').ObjectId
用于获取ObjectId类,并将字符串newsId转为了 ObjectId 类型。
参考引用

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
CSAPP-1:计算机系统漫游
本周开始了CSAPP的读书计划,规划已久,终于要开动了。之前自己也零散看过,不得不说这本书有难度都没坚持下去,这次跟着码农翻身小伙伴们一起打卡这本书。 CSAPP这本书不用多说绝对经典中的经典,如果想成为一名知道计算机硬件和软件如何工作,了解其如何影响程序的正确性和性能的程序员,那么一定得看啊。 如果能完全理解本书讲解的计算机系统以及它对应用程序的影响,那么恭喜你,你走上了一条为数不多的大牛道路。 在开始之前,我们先看一个最常见的程序: #include <stdio.h> int main() { printf("hello,world\n"); return 0; } 本文就从上面这个最简单的hello程序展开,沿着它的生命周期展开学习. 程序的保存格式 上面的hello程序其实就是一个由值 0 和 1 组成的位(即比特)序列,8个位成一组,称为字节。我们输入文本hello.c文件中的字符即用每个字节来表示(大部分计算机系统都是用ASCII标准来表示字符,即把字节转为整数值)。 总结: 信息=位+上下文 程序是如何运行的 hello程序的诞生使用C语言来编写的,好处是人...
- 下一篇
基于XXL-JOB和钉钉机器人构建系统监控
概述 线上系统挂了,服务异常了,响应超时了;系统运行结果不符合预期。。。 用户被影响,甲方爸爸不开心,后果很严重。<br> 从某种意义上讲,“在用户遇到问题之前把问题解决,问题也就不算问题了”。 文章概要:线上环境痛点》解决方案》想象空间。 1、痛点 以下痛点是本公司实践中遇到的痛点,痛点或许不具备通用性,但思路却可以借鉴。 1.1、在服务发布时,我们经常会遇到如下的问题 服务刚发布,是否部署成功; 服务刚发布,版本是否正确(实例运行版本是否是我想要部署的版本); 服务刚发布,文件是否缺失; 如果服务实例较少,挨个上服务器检测,也是可行的,但目前稍微有点用户的系统,都是多实例部署,一个机房动辄几十上百个实例,挨个上服务器费时费力。 事实上,如果CI & CD 给力,以上问题都将不再是问题。 1.2、在服务发布后,也会有如下问题 服务是否可用; 单个服务可用,但系统链路是否畅通呢; 同一个机房不同实例代码是否一致(人工疏忽、运维系统 等问题导致不一致); 此外,我们公司还涉及本地化部署(将公司系统打包部署到其他公司),本地化部署一段时间...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS关闭SELinux安全模块
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Linux系统CentOS6、CentOS7手动修改IP地址
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器