NodeJS学习笔记之MongoDB模块


Posted in NodeJs onJanuary 13, 2015

一,开篇分析

这篇属于扩展知识篇,因为在下面的文章中会用到数据库操作,所以今天就来说说它(Mongodb模块)。

(1),简介

 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。

 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。

MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。

(2),特点

 它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:

 1)面向集合存储,易存储对象类型的数据。
 2)模式自由。
 3)支持动态查询。
 4)支持完全索引,包含内部对象。
 5)支持查询。
 6)支持复制和故障恢复。
 7)使用高效的二进制数据存储,包括大型对象(如视频等)。
 8)自动处理碎片,以支持云计算层次的扩展性。
 9)支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
 10)文件存储格式为BSON(一种JSON的扩展)。
 11)可通过网络访问。

(3),安装及使用

1,下载并解压 "mongodb" 到指定目录,如下:

NodeJS学习笔记之MongoDB模块

2,其中有两个最重要的文件:”Mongod.exe“和”Mongo.exe“ 。

 

Mongod.exe ------ 用来连接到mongo数据库服务器的,即服务器端。
 

Mongo.exe ------ 用来启动MongoDB shell的,即客户端。

二,分步骤操作

(1),新建一个目录,例如:”>mongod -dbpath data/db“ 。

(2),打开浏览器输入:“http://127.0.0.1:27017/”,见到如下字样:

"You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number",表示已成功。

到此,MongoDB数据库服务已经成功启动了。

(3),创建数据库------进入CMD,键入命令“mongo.exe” 出现如下界面:

NodeJS学习笔记之MongoDB模块

(4),在shell 命令窗口键入如下命令:" use bb" (use 命令用来切换当前数据库,如果该数据库不存在,则会先新建一个)。

(5),在shell 命令窗口键入如下命令:“ db.users.insert({"name":"bigbear","password":"12345678"})”,

(这条命令是向users 集合中插入一条数据,如果集合users不存在,则会先新建一个,然后再插入数据,参数以JSON格式传入)。

(6),在shell 命令窗口键入如下命令:“db.users.find()” (显示users集合下的所有数据文档),如下图:

NodeJS学习笔记之MongoDB模块

 注意图中的“_id”,系统给每条记录自动分配了一个惟一主键 _id 。

好了!基本的功能够用了,后面如果需要额外的操作逐步补充,由于篇幅有限主要说的是NodeJS操作Mongodb,所以暂时告一段落。

 三,进入主题,实例分析

(1),npm install mongodb (下载后放入制定目录下)。

(2),之前我们已经建立好了数据库和集合("bb","users")

 var mongodb = require("mongodb") ;

 var server = new mongodb.Server("localhost",27017,{

     auto_reconnect : true

 }) ;

 var conn = new mongodb.Db("bb",server,{

     safe : true

 }) ;

 conn.open(function(error,db){

     if(error) throw error ;

     db.collection("users",{

         safe : true

     },function(err,collection){

         if(err) throw err ;

         collection.find().toArray(function(e,docs){

             if(e) throw e ;

             console.log(docs) ;

         }) ; 

     }) ;

 }) ;

运行结果如下:

 [ 

     {

         _id: 54b3ce920dc20a3ba9607f

         name: 'bigbear',

         password: '12345678'

     }

 ]

四,总结一下

(1),熟练使用MongoDB数据库。
(2),理解与关系型数据库之间的差异化。
(3),通过上述的例子,掌握NodeJS如何操作MongoDB。
(4),强调一句话:如何设计“NoSQL”类型的数据库,思想很重要。

NodeJs 相关文章推荐
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
NodeJS实现阿里大鱼短信通知发送
Jan 17 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
初识NodeJS服务端开发入门(Express+MySQL)
Apr 07 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
Nodejs把接收图片base64格式保存为文件存储到服务器上
Sep 26 NodeJs
Nodejs libuv运行原理详解
Aug 21 NodeJs
NodeJS 文件夹拷贝以及删除功能
Sep 03 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 #NodeJs
NodeJS学习笔记之FS文件模块
Jan 13 #NodeJs
NodeJS学习笔记之Http模块
Jan 13 #NodeJs
Nodejs学习笔记之Stream模块
Jan 13 #NodeJs
Nodejs学习笔记之NET模块
Jan 13 #NodeJs
Nodejs学习笔记之Global Objects全局对象
Jan 13 #NodeJs
Nodejs为什么选择javascript为载体语言
Jan 13 #NodeJs
You might like
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
php读取本地json文件的实例
2018/03/07 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
网页自动跳转代码收集
2009/09/27 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
深入浅析JS Function()构造函数
2016/08/22 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
Python中的类与对象之描述符详解
2015/03/27 Python
python利用socketserver实现并发套接字功能
2018/01/26 Python
Python 实现删除某路径下文件及文件夹的实例讲解
2018/04/24 Python
Python对excel文档的操作方法详解
2018/12/10 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
python实现批量文件重命名
2019/10/31 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
奥地利智能家居和智能生活网上商店:tink.at
2019/10/07 全球购物
毕业生的自我评价
2013/12/30 职场文书
装修致歉信
2014/01/15 职场文书
中英文求职信范文
2014/01/27 职场文书
《猴子种树》教学反思
2014/02/14 职场文书
软件售后服务承诺书
2014/05/21 职场文书
结婚保证书
2015/01/16 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
运动会通讯稿200字
2015/07/20 职场文书
centos7安装mysql5.7经验记录
2022/05/02 Servers
Win11 Build 22000.829更新补丁KB5015882发布(附更新修复内容汇总)
2022/07/15 数码科技