安装mongodb模块 npm install --save mongodb

数据库连接
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
//连接test数据库
var url = 'mongodb://localhost:27017/test';
MongoClient.connect(url, (err,db) => {
assert.equal(null,err);
console.log('连接成功');
db.close();
});
插入数据
插入一个文档对象
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
//test数据库的路径
var url = 'mongodb://localhost:27017/test';
//插入文档
var insertDocument = (db,callback) => {
//在test库下blog集合中 新增json文档
db.collection('blog').insertOne({
name:"xiaos",
age:22
}, (err, result) => {
assert.equal(err,null);
console.log('新增文档成功');
callback();
});
};
//插入操作
MongoClient.connect(url, (err,db) => {
assert.equal(null,err);
insertDocument(db, ()=>{
db.close();
});
});
批量插入操作:insertMany(doc,options,callback)(如果没有callback函数,本身返回一个Promise对象)
简单的insertMany操作
var MongoClient = require('mongodb').MongoClient,
test = require('assert');
MongoClient.connect('mongodb://localhost:27017/test',(err, db) => {
var blog = db.collection('blog');
//新增两个文档对象
blog.insertMany([{name:"shen"},{name:"fzq"}],(err,r) => {
test.equal(null,err);
//回调函数中返回的r为执行完插入操作的对象,insertedCount属性为已经插入的对象个数
test.equal(2,r.insertedCount);
db.close();
});
});
使用Promise的批量插入操作!
var MongoClient = require('mongodb').MongoClient,
test = require('assert');
MongoClient.connect('mongodb://localhost:27017/test', (err,db) => {
var blog = db.collection('blog');
blog.insertMany([{name:"xiaosGG"},{name:"fzqDD"}]).then((r) => {
test.equal(2,r.insertedCount);
db.close();
});
});
因为mongodb和nodejs都是异步io的机制,所有几乎所有耗时的操作都是以回调函数的方式完成。但是因为回调函数的层次嵌套,一段代码后面可能会跟上一大段的 });,随着层级的增加,代码变得不易理解和维护。所有在使用MongoDB时,推荐用Promise的方式来解决回调嵌套的问题。
从上面的代码可以看出,insertMany([obj...])返回一个Promise对象,我们用.then((r)=>{})接收正常的回调值,用.catch((err) => {})来抓取异常。
使用生成器(Generator)的批量插入操作
var MongoClient = require('mongodb').MongoClient,
test = require('assert'),
co = require('co');
co(function*(){
var db = yield MongoClient.connect('mongodb://localhost:27017/test');
var blog = db.collection('blog');
var r = yield blog.insertMany([{name:"xiaosBB"},{name:"fzqMM"}]);
test.equal(2,r.insertedCount);
db.close();
});
单个文档插入:insertOne(doc,options,callback)(如果没有callback函数,本身返回一个Promise对象)
简单的插入操作
var MongoClient = require('mongodb').MongoClient,
test = require('assert');
MongoClient.connect('mongodb://localhost:27017/test',(err,db)=>{
var blog = db.collection('blog');
blog.insertOne({name:"xiaos"},(err,r) => {
test.equal(null,err);
test.equal(1,r.insertedCount);
db.close();
});
});
使用Promise的插入操作
var MongoClient = require('mongodb').MongoClient,
test = require('assert');
MongoClient.connect('mongodb://localhost:27017/test',(err,db)=>{
var blog = db.collection('blog');
blog.insertOne({name:"xiaos"}).then((r)=>{
test.equal(1,r.insertedCount);
db.close();
});
});
使用生成器的插入操作
var MongoClient = require('mongodb').MongoClient,
test = require('assert'),
co = require('co');
co(function*(){
var db = yield MongoClient.connect('mongodb://localhost:27017/test');
var blog = db.collection('blog');
var r = yield blog.insertOne({name:"xiaosBB"});
test.equal(1,r.insertedCount);
db.close();
});
mapReduce(map,reduce,options,callback) return Promise if no callback
var MongoClient = require('mongodb').MongoClient,
test = require('assert');
MongoClient.connect()
isCapped(callback) return Promise if no callback
var MongoClient = require('mongodb').MongoClient,
test = require('assert');
MongoClient.connect('mongodb://localhost:27017/test',(err,db) => {
db.createCollection('newBlog',{'capped':true,'size':1024},(err,collection) => {
test.equal('newBlog',collection.collectionName);
collection.isCapped((err,capped) => {
test.equal(true,capped);
db.close();
});
});
});
capped collection是指固定大小的集合,新元素插入后会覆盖掉旧的元素,保持整个集合的大小不变。
//在命令行中输入mongo
//创建一个1024大小的myCappedCollection集合
db.createCollection('myCappedCollection',{'capped':true,'size':1024});
//插入1000条记录
for (var i = 1;i <= 1000;i++){
db.myCappedCollection.save({id:i,name:'xiaos'+i});
}
//查询文档个数
db.myCappedCollection.count()
//实际只有18个文档id为983-1000 即新元素覆盖了旧元素
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# nodejs使用mongodb
# nodejs
# mongodb
# nodejs中使用mongodb
# nodejs连接mongodb数据库实现增删改查
# NodeJS中的MongoDB快速入门详细教程
# NodeJS连接MongoDB数据库时报错的快速解决方法
# NodeJS学习笔记之MongoDB模块
# nodejs中使用monk访问mongodb
# 文档
# 回调
# 如果没有
# 都是
# 是指
# 上一
# 可以看出
# 后会
# 几乎所有
# 创建一个
# 命令行
# 大家多多
# 会跟
# 大段
# log
# console
# close
# equal
# gt
# db
相关文章:
香港服务器网站卡顿?如何解决网络延迟与负载问题?
建站之星3.0如何解决常见操作问题?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
C#如何序列化对象为XML XmlSerializer用法
如何自定义建站之星模板颜色并下载新样式?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
制作农业网站的软件,比较好的农业网站推荐一下?
建站主机解析:虚拟主机配置与服务器选择指南
广德云建站网站建设方案与建站流程优化指南
宁波免费建站如何选择可靠模板与平台?
如何撰写建站申请书?关键要点有哪些?
建站VPS推荐:2025年高性能服务器配置指南
如何通过FTP服务器快速搭建网站?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
全景视频制作网站有哪些,全景图怎么做成网页?
建站之星客服服务时间及联系方式如何?
建站之星Pro快速搭建教程:模板选择与功能配置指南
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
,南京靠谱的征婚网站?
如何在西部数码注册域名并快速搭建网站?
建站之星如何一键生成手机站?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
如何用低价快速搭建高质量网站?
建站之星如何快速解决建站难题?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
如何通过远程VPS快速搭建个人网站?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
如何批量查询域名的建站时间记录?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
,怎么用自己头像做动态表情包?
如何规划企业建站流程的关键步骤?
如何选择高效响应式自助建站源码系统?
制作门户网站的参考文献在哪,小说网站怎么建立?
,网页ppt怎么弄成自己的ppt?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
如何在建站主机中优化服务器配置?
活动邀请函制作网站有哪些,活动邀请函文案?
C#怎么创建控制台应用 C# Console App项目创建方法
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
公众号网站制作网页,微信公众号怎么制作?
非常酷的网站设计制作软件,酷培ai教育官方网站?
已有域名和空间,如何快速搭建网站?
如何在IIS7中新建站点?详细步骤解析
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
如何设置并定期更换建站之星安全管理员密码?
三星网站视频制作教程下载,三星w23网页如何全屏?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
Swift开发中switch语句值绑定模式
*请认真填写需求信息,我们会在24小时内与您取得联系。