Node.js 手册查询-2-MongoDB数据库方法
MongoDb
标签(空格分隔): 数据库 MongoDb
安装
当前版本 2.X
解压至任意目录,最好不要是c盘. 在根目录下建立一个文件夹用来存储工程
我的例子:
安装至:
d:\mongodb
建立存储目录
d:\mongodb\blog
运行CMD,切入bin目录
cd d:\mongodb\bin
启用数据库
mongod -dbpath “d:\mongodb\blog”
这样就完毕了,如果关闭CMD,数据库就会关闭.
建立一个快速启动的bat文件,因为每次启动服务器都是这样的命令
启动mongodb.bat:
d:\mongodb\bin\mongod.exe -dbpath d:\mongodb\blog
Node.js 中使用
1. package.json dependencies对象中加入 "mongodb": "*"
2. 在工程目录下运行 npm install 更新依赖文件
3. 引入
var Db = require(‘mongodb’).Db; var Connection = require(‘mongodb’).Connection; var Server = require(‘mongodb’).Server; // ‘blog’ 数据库名称 mongodb就是一个Db实例 var mongodb = new Db(‘blog’, new Server(‘localhost’, Connection.DEFAULT_PORT, {}));
Db API
属性: serverConfig 拓扑结构, 比如上面实例的 new Server(‘localhost’, Connection.DEFAULT_PORT, {}) bufferMaxEntries 数据库当前缓冲区值 databaseName 当前数据库名称, 比如上面实例的’blog’
API: //将用户添加到该数据库 Db.addUser(username, password, options, callback) //删除用户 Db.removeUser(username, callback) //返回管理员数据库实例 Db.admin() //验证用户 Db.authenticate(username, password, options, callback) //关闭连接 force布尔值,是否强制关闭 Db.close(force, callback) //取一个特定集合 Db.collection(name, options, callback) //获取所有集合 Db.collections(callback) //创建一个集合 Db.createCollection(name, options, callback) //创建索引 Db.createIndex(name, fieldOrSpec, options, callback) //删除集合 Db.dropCollection(name, callback) //删除数据库 Db.dropDatabase(callback) //获取集合中的信息 Db.listCollections(name, options, callback) //打开数据库 Db.open(callback) //登出数据库 Db.logout(options, callback) //统计所有数据 Db.stats(options, callback)
一般使用流程: //打开数据库 Db.open(function(err,db){ //读取集合 db.collection(name,function(err,collection){ //在集合中插入数据 collection.insert({‘age’:21,‘email’:‘xxxx’}, {safe: true}, function(err, user){Db.close();}) })
})
collection API
API: //查询匹配文档的数目 count(query, options, callback) //创建索引 createIndex(fieldOrSpec, options, callback) //删除多个文档 deleteMany(filter, options, callback) //删除一个文档 deleteOne(filter, options, callback) //删除集合 drop(callback) //删除集合中的索引 dropAllIndexes(callback) //删除指定索引 dropIndex(indexName, options, callback) //是否存在索引,不存在就创建 ensureIndex(fieldOrSpec, options, callback) //查询 find(query) //查询第一个 findOne(query, options, callback) //查找和替换文档 findAndModify(query, sort, doc, options, callback) //查找并删除 findAndRemove(query, sort, options, callback) //找到一个文件并删除 findOneAndDelete(filter, options, callback) //找到一个文件并替换 findOneAndReplace(filter, replacement, options, callback) //找到一个文件并更新 findOneAndUpdate(filter, update, options, callback) //所有索引集合 indexes(callback) //检查集合中是否存在索引 indexExists(indexes, callback) //获取此集合的索引信息 indexInformation(options, callback) //批量写 initializeOrderedBulkOp(options, callback)
//插入文档到数据库中 docs 对象或数组,
insert(docs, options, callback)
实例
inset({'a':1}, {w:1},function(err,data){})
//插入数组
insertMany(docs, options, callback)
//插入一个单个文件
insertOne(doc, options, callback)
//重建索引
reIndex(callback)
//删除文件
remove(selector, options, callback)
//重命名集合
rename(newName, options, callback)
//保存
save(doc, options, callback)
//统计所有数据
stats(options, callback)
//更新集合
update(selector, document, options, callback)
基础
文档
多个键和值有序的放置在一起便是文档,基本数据单元
javascript 中,文档表示为对象.
每个文档都有一个 _id 的键,值在所处集合中是唯一的
有序的: (下面2个文档完全不同)
{'title':'xueyou', 'Age':21}
{'Age':21, 'title':'xueyou'}
语法:
键不能包含 \0 空字符, 这个字符表示键的结尾
. 和 $ 有特殊含义,通常保留
_ 开头的键通常也要保留,虽然不强制
MongoDb区分类型也区分大小写
文档不能有重复的键
集合
看做是表,多个文档组成集合
语法:
不能包含 \0 空字符
不能使空串 ""
不能包含 $
不能 system 开头.系统保留
system.users存储着数据库内用户的信息
system.namespaces 存储着所有数据库集合的信息
数据库
多个集合组成数据库. 一个MongoDB实例可以承载多个数据库,每个数据库有独立的权限
语法:
不能空串,全部小写,最多64字节,不能特殊字符
因为数据库名称会变成系统的文件
数据库保留名称:
admin - local - config
shell
MongoDb 自带javascript shell;
可以运行任何javascript程序, DOM和浏览器模型不算
启动数据库, 进入bin 运行mongo 启动shell
当前版本 2.6.5
默认连接 test 数据库, 并将这个数据库赋值给全局变量 db
API helo 获取帮助 exit 退出shell
db.help() 查看数据库的API
db.foo.help() 查看集合的API
//获取集合
db.getCollection('集合名')
//切换到 foobar数据库,这个时候全局变量 db 就是foobar数据库
switched to db foobar
//插入一个文档到集合中, db.集合名.insert
db.blog.insert(对象)
**查询时shell默认最多显示20个匹配文档**
//返回集合里所有文档
db.blog.find()
//查看集合里的一个文档
db.blog.findOne()
//更新文档
db/blog.update({title:'aa'},文档对象)
//从数据库永久删除文档,无参时删除集合内所有文档
db.blog.remove();
其他
mongod.exe 启动数据库,没参数的时候默认数据目录在 c:\data\dbm
使用27017端口, 同时还会启动一个HTTP服务器,监听比端口号大1000的端口
28017端口. 访问: http://localhost:28017 可以获取数据库的管理信息
Node.js 手册查询-2-MongoDB数据库方法的更多相关文章
- Node.js 手册查询-1-核心模块方法
Node.js 学习手册 标签(空格分隔): node.js 模块 核心模块 核心模块是被编译成二进制代码,引用的时候只需require表示符即可 os 系统基本信息 os模块可提供操作系统的一些基本 ...
- Node.js 手册查询-3-Mongoose 方法
Mongoose 参考手册 标签(空格分隔): MongoDB Mongoose 是什么? 一般我们不直接用MongoDB的函数来操作MongoDB数据库 Mongose就是一套操作MongoDB数据 ...
- Node.js 手册查询-4-Express 方法
express 标签(空格分隔): node.js express [TOC] 安装: 新版本中命令行工具分家了 npm install -g express //安装 express 然后 npm ...
- Node.js 手册查询-5-Ejs 方法
express 中使用 //设置模板目录 app.set('views', path.join(__dirname, 'views')); //设置模板引擎 app.set('view engine' ...
- Node.js、express、mongodb 实现分页查询、条件搜索
前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...
- Node.js 连接 MySQL 并进行数据库操作
Node.js 连接 MySQL 并进行数据库操作 按照这篇操作mysql的指引,我远程操作了我另一台电脑的mysql数据库. var mysql = require('mysql'); var c ...
- nodejs实战《一起学 Node.js》 使用 Express + MongoDB 搭建多人博客
GitHub: https://github.com/nswbmw/N-blog N-blog 使用 Express + MongoDB 搭建多人博客 开发环境 Node.js: 6.9.1 Mong ...
- 使用Node.js给图片加水印的方法
一.准备工作: 首先,确保你本地已经安装好了node环境. 然后,我们进行图像编辑操作需要用到一个Node.js的库:images. 这个库的地址是:https://github.com/zhangy ...
- Node.js、express、mongodb 入门(基于easyui datagrid增删改查)
前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验 ...
随机推荐
- a个人经验总结2
金额 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8& ...
- C# NamePipe使用小结
最近在一次项目中使用到了C#中命名管道,所以在此写下一篇小结备忘. 为什么要使用命名管道呢?为了实现两个程序之间的数据交换.假设下面一个场景.在同一台PC上,程序A与程序B需要进行数据通信,此时我们就 ...
- How to use Ajax on Visualforce page on Salesforce platform
Just use Ajax pattern to call object data from server on visualforce page. Following is the Asynchro ...
- python-logging-日志系统
有时候需要记录日志,典型的出现在web程序或者服务器中,需要与正在运行的程序交互或者得知里面正在运行的信息 最近在倒腾webservice,使用spyne模块进行打包服务,很多实例代码也都用到了这个l ...
- iOS中图片动画的三种模式及基本的代码实现
-(void)play { //第一种图片动画模式 头尾方式 //头尾方式 [UIView beginAnimations:nil context:nil];//动画开始 [UIView setAni ...
- Servlet部分细节介绍
1 Servlet与线程安全 因为一个类型的Servlet只有一个实例对象,那么就有可能会出现一个Servlet同时处理多个请求,那么Servlet是否为线程安全的呢?答案是:"不是线 ...
- 【前台 submit的重复提交 错误】submit的重复提交
错误表现: 会表现出来:ajax执行成功但是时而会进回调函数,时而不会进入回调函数. 分析原因: 页面的表达提交使用submit,然后又对这个提交按钮绑定一个点击事件,使用ajax来和后台进行交互,这 ...
- [转载]C++声明和定义的区别
<C++Primer>第四版 2.3.5节中这么说到: ①变量定义:用于为变量分配存储空间,还可为变量指定初始值.程序中,变量有且仅有一个定义. ②变量声明:用于向程序表明变量的类型和名字 ...
- CSS3详解:background
CSS3对于background做了一些修改,最明显的一个就是采用设置多背景,不但添加了4个新属性,并且还对目前的属性进行了调整增强. 1.多个背景图片 在css3里面,你可以再一个标签元素里应用多个 ...
- hdu2476 String painter(区间dp)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2476 Problem Description There are two strings ...