NodeJs + mongodb模块demo

代码比较通俗易懂,但是我还是在这个过程中浪费了不少时间,也算是看到了nodejs中异步的一个小坑。未来的坑还有很多,慢慢找坑填坑吧。

参考资料如下:

1、断言模块 : https://nodejs.org/api/assert.html

2、mongodb模块:https://github.com/mongodb/node-mongodb-native

废话不多说了,发完代码睡觉了,有兴趣的朋友可以持续关注本系列。


 1 //加载nodejs中的mongodb模块
 2 var MongoClient = require(‘mongodb‘).MongoClient;
 3
 4 //加载assert(断言模块)参考地址:https://nodejs.org/api/assert.html
 5 var assert = require(‘assert‘);
 6
 7 // mongodb HOST地址 test表示当前所在的数据库
 8 var url = ‘mongodb://localhost:27017/test‘;
 9 //启动mongodb服务,建立连接
10 MongoClient.connect(url, function(err, db) {
11   assert.equal(null, err);
12   console.log("Connected correctly to server");
13
14   //同步嵌套的写法
15   insertDocuments(db, function() {
16     updateDocument(db, function() {
17       deleteDocument(db, function() {
18         findDocuments(db, function() {
19           db.close();
20         });
21       });
22     });
23   });
24
25   //仔细观察同步与异步的CURD执行顺序。尝试在异步后添加db.close(); 思考为什么报错。
26   //异步的写法
27   // insertDocuments(db, function(){});
28   // updateDocument(db, function(){});
29   // deleteDocument(db, function(){});
30   // findDocuments(db, function(){});
31
32
33
34
35 });
36
37
38
39 //下面演示CURD的操作
40 var insertDocuments = function(db, callback) {
41     //得到文档集合
42     var collection = db.collection(‘rover‘);
43     //构造数据
44     var testData = [{a:1},{a:2},{a:3}];
45     //插入数据
46     collection.insertMany(testData, function(err, result) {
47         assert.equal(err, null);
48         assert.equal(3,result.result.n);
49         assert.equal(3,result.ops.length);
50         console.log(‘Inserted 3 Documents into the document collections‘);
51         callback(result);
52
53     });
54
55 };
56
57
58 //Updating a Documents  修改操作
59 var updateDocument = function(db, callback) {
60     //得到文档集合
61     var collection = db.collection(‘rover‘);
62     //修改文档集合
63     var update = {a:2};
64     var change = {$set:{a:5555}};
65     collection.updateOne(update,change, function(err, result) {
66         assert.equal(err,null);
67         assert.equal(1, result.result.n);
68         console.log("Updated the document with the field a equal to 2");
69         callback(result);
70     })
71 };
72
73 //Delete a document
74 var deleteDocument = function(db, callback) {
75   // Get the documents collection
76   var collection = db.collection(‘rover‘);
77   // Insert some documents
78   collection.deleteOne({ a : 3 }, function(err, result) {
79     assert.equal(err, null);
80     assert.equal(1, result.result.n);
81     console.log("Removed the document with the field a equal to 3");
82     callback(result);
83   });
84 };
85
86 //读取数据
87 var findDocuments = function(db, callback) {
88   // Get the documents collection
89   var collection = db.collection(‘rover‘);
90   // Find some documents
91   collection.find({}).toArray(function(err, docs) {
92     // assert.equal(err, null);
93     // assert.equal(2, docs.length);
94     console.log("Found the following records");
95     console.dir(docs);
96     callback(docs);
97   });
98 };
时间: 2024-10-11 00:06:47

NodeJs + mongodb模块demo的相关文章

大熊君大话NodeJS之------MongoDB模块(额外篇)

一,开篇分析 这篇属于扩展知识篇,因为在下面的文章中会用到数据库操作,所以今天就来说说它(Mongodb模块). (1),简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bj

NodeJS学习笔记之MongoDB模块

其中还有,nodejs远程连接mysql数据库 一,开篇分析 这篇属于扩展知识篇,因为在下面的文章中会用到数据库操作,所以今天就来说说它(Mongodb模块). (1),简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的

docker & nodejs & mongodb Nodejs 应用简单的访问Mongodb 部署至Docker

docker & nodejs & mongodb Nodejs 应用简单的访问Mongodb 部署至Docker 原文地址 https://www.cnblogs.com/zhangyanbo/p/5851644.html (自己操作时遇到不能继续的情况,所以稍做了修改完善) 目录结构 . ├── app.js ├── controller ├── Dockerfile ├── model ├── node_modules ├── package.json ├── router └──

Nodejs mkdirP 模块导致CPU占用高的问题

Nodejs mkdirP 模块导致CPU占用高的问题 近期将nodejs项目部署到服务器上并启动时,发现node进程的cpu占用率在40%左右,当时表示非常不解,刚启动的服务并没有运行什么需要大量消耗cpu的逻辑,且此时还未有请求发送到服务器端. 鉴于这种情况,只能猜测是某段程序在初始化一些东西的时候异常,所以才导致了这种情况. 经过对代码的排查后,最终锁定出为题的代码块如下: router.use(multer({ dest: config.uploadDir, limits:{ fileS

Python登录模块Demo示例

Python登录模块Demo示例: #!/usr/bin/env python # This content comes from alex. while True:     NAME = raw_input("Please input your name:\n")     if NAME == 'alex':         P = '123'         PASSWD = raw_input("Please input your password:\n")

配置 Windows 下的 nodejs C++ 模块编译环境 安装 node-gyp

配置 Windows 下的 nodejs C++ 模块编译环境 根据 node-gyp 指示的 Windows 编译环境说明, 简单一句话就是 "Python + VC++ 编译环境". 所有需要的安装文件, 我都下载好放到百度云盘了: nodejs-gyp-windows Python 安装 python-2.7.7.msi iso 虚拟磁盘 安装 DTLite4491-0356.exe Windows XP 文件在: node-gyp-windows/windowsXP 用 DTL

SaltStack源码分析之使用MongoDB模块

MongoDB模块

IOKING真正无锁服务器引擎之消息引擎模块Demo(no-lock)

 关键词: no-lock interlocked lock-free tcp/ip socket server engine epoll iocp server out-of-orderexecution无锁 原子锁 原子操作 原子指令 锁无关 开放锁 通讯服务器 引擎 高并发 大数据 搜索引擎 完成端口服务器 cpu乱序并行执行 内存栅栏 IOKING 真正无锁服务器引擎之消息引擎模块Demo(no-lock) 这是继无锁iocp通讯模块以后,又一个无锁模块.下一步有时间将会把两个整合在

nodejs cheerio模块提取html页面内容

nodejs cheerio模块提取html页面内容 Table of Contents 1. nodejs cheerio模块提取html页面内容 1.1. 找到目标元素 1.2. 美化文本输出 1.3. 提取答案文本 1.4. 最终代码 本文给出使用一个用cheerio模块提取html文件中指定内容的例子,并说明具体步骤.涉及到的API.以及其它模块. cheerio模块是一个类似jquery的模块,具有相似的API.功能,能够将一个网页解析为DOM,以及通过selector选择元素,设置.