Node.js使用MongoDB的ObjectId作为查询条件的方法


Posted in Javascript onSeptember 10, 2019

当往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 类型。

参考引用

完整源码:https://github.com/waylau/mean-book-samples

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery设置控件位置的方法
Aug 21 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
Nov 17 Javascript
JavaScript利用构造函数和原型的方式模拟C#类的功能
Mar 06 Javascript
原生js实现图片层叠轮播切换效果
Feb 02 Javascript
Bootstrap每天必学之导航条(二)
Mar 01 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
Jul 12 Javascript
canvas绘制万花筒效果(代码分享)
Jan 20 Javascript
jquery请求servlet实现ajax异步请求的示例
Jun 03 jQuery
JS实现碰撞检测的方法分析
Jan 19 Javascript
使用Angular自定义字段校验指令的方法示例
Feb 01 Javascript
微信小程序scroll-view点击项自动居中效果的实现
Mar 25 Javascript
为react组件库添加typescript类型提示的方法
Jun 15 Javascript
layui表格 返回的数据状态异常的解决方法
Sep 10 #Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
Sep 10 #Javascript
vscode中eslint插件的配置(prettier配置无效)
Sep 10 #Javascript
layer.open回调获取弹出层参数的实现方法
Sep 10 #Javascript
VScode格式化ESlint方法(最全最好用方法)
Sep 10 #Javascript
npm 语义版本控制详解
Sep 10 #Javascript
解决layui的input独占一行的问题
Sep 10 #Javascript
You might like
JpGraph php柱状图使用介绍
2011/08/23 PHP
PHP eval函数使用介绍
2013/12/08 PHP
php注册登录系统简化版
2020/12/28 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
2016/11/09 PHP
WebGame《逆转裁判》完整版 代码下载(1月24日更新)
2007/01/29 Javascript
jQuery Lightbox 图片展示插件使用说明
2010/04/25 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
基于jquery的放大镜效果
2012/05/30 Javascript
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
2016/03/05 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
jQuery 的 ready()的纯js替代方法
2016/11/20 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
启动targetcli时遇到错误解决办法
2017/10/26 Python
代码分析Python地图坐标转换
2018/02/08 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
Python一键安装全部依赖包的方法
2019/08/12 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
Python将list元素转存为CSV文件的实现
2020/11/16 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
2014年后勤工作总结
2014/11/18 职场文书
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android
python编程学习使用管道Pipe编写优化代码
2021/11/20 Python