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数据库方法的更多相关文章

  1. Node.js 手册查询-1-核心模块方法

    Node.js 学习手册 标签(空格分隔): node.js 模块 核心模块 核心模块是被编译成二进制代码,引用的时候只需require表示符即可 os 系统基本信息 os模块可提供操作系统的一些基本 ...

  2. Node.js 手册查询-3-Mongoose 方法

    Mongoose 参考手册 标签(空格分隔): MongoDB Mongoose 是什么? 一般我们不直接用MongoDB的函数来操作MongoDB数据库 Mongose就是一套操作MongoDB数据 ...

  3. Node.js 手册查询-4-Express 方法

    express 标签(空格分隔): node.js express [TOC] 安装: 新版本中命令行工具分家了 npm install -g express //安装 express 然后 npm ...

  4. Node.js 手册查询-5-Ejs 方法

    express 中使用 //设置模板目录 app.set('views', path.join(__dirname, 'views')); //设置模板引擎 app.set('view engine' ...

  5. Node.js、express、mongodb 实现分页查询、条件搜索

    前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...

  6. Node.js 连接 MySQL 并进行数据库操作

    Node.js 连接 MySQL 并进行数据库操作  按照这篇操作mysql的指引,我远程操作了我另一台电脑的mysql数据库. var mysql = require('mysql'); var c ...

  7. nodejs实战《一起学 Node.js》 使用 Express + MongoDB 搭建多人博客

    GitHub: https://github.com/nswbmw/N-blog N-blog 使用 Express + MongoDB 搭建多人博客 开发环境 Node.js: 6.9.1 Mong ...

  8. 使用Node.js给图片加水印的方法

    一.准备工作: 首先,确保你本地已经安装好了node环境. 然后,我们进行图像编辑操作需要用到一个Node.js的库:images. 这个库的地址是:https://github.com/zhangy ...

  9. Node.js、express、mongodb 入门(基于easyui datagrid增删改查)

    前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验 ...

随机推荐

  1. a个人经验总结2

    金额 <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8& ...

  2. C# NamePipe使用小结

    最近在一次项目中使用到了C#中命名管道,所以在此写下一篇小结备忘. 为什么要使用命名管道呢?为了实现两个程序之间的数据交换.假设下面一个场景.在同一台PC上,程序A与程序B需要进行数据通信,此时我们就 ...

  3. 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 ...

  4. python-logging-日志系统

    有时候需要记录日志,典型的出现在web程序或者服务器中,需要与正在运行的程序交互或者得知里面正在运行的信息 最近在倒腾webservice,使用spyne模块进行打包服务,很多实例代码也都用到了这个l ...

  5. iOS中图片动画的三种模式及基本的代码实现

    -(void)play { //第一种图片动画模式 头尾方式 //头尾方式 [UIView beginAnimations:nil context:nil];//动画开始 [UIView setAni ...

  6. Servlet部分细节介绍

    1 Servlet与线程安全    因为一个类型的Servlet只有一个实例对象,那么就有可能会出现一个Servlet同时处理多个请求,那么Servlet是否为线程安全的呢?答案是:"不是线 ...

  7. 【前台 submit的重复提交 错误】submit的重复提交

    错误表现: 会表现出来:ajax执行成功但是时而会进回调函数,时而不会进入回调函数. 分析原因: 页面的表达提交使用submit,然后又对这个提交按钮绑定一个点击事件,使用ajax来和后台进行交互,这 ...

  8. [转载]C++声明和定义的区别

    <C++Primer>第四版 2.3.5节中这么说到: ①变量定义:用于为变量分配存储空间,还可为变量指定初始值.程序中,变量有且仅有一个定义. ②变量声明:用于向程序表明变量的类型和名字 ...

  9. CSS3详解:background

    CSS3对于background做了一些修改,最明显的一个就是采用设置多背景,不但添加了4个新属性,并且还对目前的属性进行了调整增强. 1.多个背景图片 在css3里面,你可以再一个标签元素里应用多个 ...

  10. hdu2476 String painter(区间dp)

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2476 Problem Description There are two strings ...