环境
  MongoDB4.0
  win7_x64
  CentOS6.5_x64

一、MongoDB简介
(1)MongoDB使用C++开发。
(2)MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
(3)MongoDB 将数据存储为一个文档。MongoDB是一个基于分布式文件存储的数据库。
(4)MongoDB使用BSON作为数据存储和传输的格式。BSON是一种类似JSON的二进制序列化文档,支持嵌套对象和数组。
(5)MongoDB很像MySQL,collection对应MySQL的table,document对应MySQL的row。官方给自己的定义是Key-value存储(高性能和高扩展)和传统RDBMS(丰富的查询和功能)之间的一座桥梁。

(6)MongoDB 不支持事务;

(7)MongoDB索引在内存中,而且创建受一定限制;
  
二、安装
1、win7安装

(1)官网下载:mongodb-win32-x86_64-2008plus-ssl-4.0.11.zip
(2)解压:D:\mongoDB4.0


(3)通过服务安装,通过控制台安装:

进入目录:D:\mongoDB4.0\bin,启动cmd:

mongod --bind_ip 127.0.0.1 --logpath "D:\mongoDB4.0\log\mongodb.log" --logappend --dbpath "D:\mongoDB4.0\data\db" --port  --serviceName "MongoDBService" --serviceDisplayName "MongoDB" --install

下表为mongodb启动的参数说明:

参数 描述
--bind_ip 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP
--logpath 定MongoDB日志文件,注意是指定文件不是目录
--logappend 使用追加的方式写日志
--dbpath 指定数据库路径,注意:MongoDB默认使用db目录作为数据存储目录,但是这个目录需要手工创建,这里我们创建的是:D:\mongoDB4.0\data\db
--port 指定服务端口号,默认端口27017
--serviceName 指定服务名称
--serviceDisplayNam 指定服务名称,有多个mongodb服务时执行。
--install 指定作为一个Windows服务安装。

(4)启动服务:

启动:net start MongoDBService
停止:net stop MongoDBService

(5)MongoDB后台管理 Shell

mongo

退出:exit

参考:window平台安装 MongoDB

2、Linux安装

(1)官网下载:mongodb-linux-x86_64-4.0.12.tgz
(2)解压:

[root@node102 src]# tar -zxvf mongodb-linux-x86_64-4.0..tgz -C /usr/local

(3)安装:

首先创建数据目录和日志目录:

[root@node102 mongodb-linux-x86_64-4.0.]# cd /usr/local/mongodb-linux-x86_64-4.0. && mkdir -p ./data/db ./log 

注意:/data/db 是 MongoDB 默认的启动的数据库路径,如果你的数据库目录不是/data/db,可以通过 --dbpath 来指定。

然后执行启动命令:

[root@node102 mongodb-linux-x86_64-4.0.]# cd ./bin && ./mongod --dbpath=/usr/local/mongodb-linux-x86_64-4.0.12/data/db --logpath=/usr/local/mongodb-linux-x86_64-4.0.12/log/mongodb.log --fork
--09T15::59.686+ I STORAGE [main] Max cache overflow file size custom option:
about to fork child process, waiting until server is ready for connections.
forked process:
child process started successfully, parent exiting

注意:

--fork:后台启动

(4)MongoDB后台管理 Shell,可以配置环境变量/etc/profile

[root@node102 bin]# ./mongo
MongoDB shell version v4.0.12
connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("dd068bb5-ddaf-4709-acb4-1f5e3bd6ff40") }
MongoDB server version: 4.0.
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
--09T15::59.745+ I STORAGE [initandlisten]
--09T15::59.745+ I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
--09T15::59.745+ I STORAGE [initandlisten] ** See http://dochub.mongodb.org/core/prodnotes-filesystem
--09T15::00.463+ I CONTROL [initandlisten]
--09T15::00.463+ I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
--09T15::00.463+ I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
--09T15::00.463+ I CONTROL [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
--09T15::00.463+ I CONTROL [initandlisten]
--09T15::00.463+ I CONTROL [initandlisten] ** WARNING: This server is bound to localhost.
--09T15::00.463+ I CONTROL [initandlisten] ** Remote systems will be unable to connect to this server.
--09T15::00.463+ I CONTROL [initandlisten] ** Start the server with --bind_ip <address> to specify which IP
--09T15::00.463+ I CONTROL [initandlisten] ** addresses it should serve responses from, or with --bind_ip_all to
--09T15::00.463+ I CONTROL [initandlisten] ** bind to all interfaces. If this behavior is desired, start the
--09T15::00.463+ I CONTROL [initandlisten] ** server with --bind_ip 127.0.0.1 to disable this warning.
--09T15::00.463+ I CONTROL [initandlisten]
--09T15::00.463+ I CONTROL [initandlisten]
--09T15::00.463+ I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
--09T15::00.463+ I CONTROL [initandlisten] ** We suggest setting it to 'never'
--09T15::00.463+ I CONTROL [initandlisten]
--09T15::00.463+ I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
--09T15::00.463+ I CONTROL [initandlisten] ** We suggest setting it to 'never'
--09T15::00.463+ I CONTROL [initandlisten]
> + > exit
bye
[root@node102 bin]#

(5)关闭

(5.1)在mongo客户端关闭

> use admin
> db.shutdownServer()

(5.2)使用mongod,注意关闭哪个数据库 需要指定对应的--dbpath

[root@node102 bin]# ./mongod --dbpath=/usr/local/mongodb-linux-x86_64-4.0./data/db --shutdown

参考:Linux平台安装MongoDB

注意:mongoDB4好像不再支持web用户界面。

三、MongoDB存取原理
内部执行引擎为JS解释器(解释符合JS语法的语句):
插入操作:把JSON对象数据存储成BSON结构的文档结构,
查询操作:把BSON结构数据转换为JSON对象.

四、MongoDB和关系型数据库区别

参考:MongoDB 概念解析

 package com.mongodb;

 import java.util.HashMap;
import java.util.Map; import org.bson.Document;
import org.bson.conversions.Bson;
import org.bson.types.ObjectId; import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase; public class TestMongoDB { public static void main(String[] args)
{
TestMongoDB test = new TestMongoDB();
//插入数据
test.insertData();
//查询数据
test.find();
test.findone();
//更新数据
test.update();
//删除数据
test.delete();
} public void find()
{
//创建连接客户端
MongoClient client = new MongoClient("localhost",27017);
//获取数据库对象
MongoDatabase db = client.getDatabase("test");
//获取操作的集合对象
MongoCollection<Document> collection = db.getCollection("wjy");
//具体操作
FindIterable<Document> it = collection.find();
//获取游标对象
MongoCursor<Document> cursor = it.iterator();
while (cursor.hasNext())
{
//取出每一个文档对象(行)
Document doc = cursor.next();
String name = doc.getString("name");
if ("乔峰".equals(name))
{
Integer age = doc.getInteger("age");
System.out.println(name+","+age);
}
else
{
Double age = doc.getDouble("age");
System.out.println(name+","+age);
} }
//释放资源
cursor.close();
client.close();
} public void findone()
{
MongoClient client = new MongoClient("localhost",27017);
//获取数据库对象
MongoDatabase db = client.getDatabase("test");
//获取操作的集合对象
MongoCollection<Document> collection = db.getCollection("wjy");
//具体操作
Bson filter = new BasicDBObject("_id", new ObjectId("5850eacd7065f52b0eab7ff4"));
FindIterable<Document> it = collection.find(filter);
//获取游标对象
MongoCursor<Document> cursor = it.iterator();
while (cursor.hasNext())
{
//取出每一个文档对象(行)
Document doc = cursor.next();
String name = doc.getString("name");
if ("乔峰".equals(name))
{
Integer age = doc.getInteger("age");
System.out.println(name+","+age);
}
else
{
Double age = doc.getDouble("age");
System.out.println(name+","+age);
} }
//释放资源
cursor.close();
client.close();
} public void insertData()
{
MongoClient client = new MongoClient("localhost",27017);
MongoDatabase db = client.getDatabase("test");
MongoCollection<Document> collection = db.getCollection("wjy");
//使用Map来封装json数据
Map<String,Object> map = new HashMap<String,Object>();
map.put("name", "乔峰");
map.put("age", 35);
map.put("gender", "true man");
Map<String,Object> hobbyMap = new HashMap<String,Object>();
hobbyMap.put("girl", "阿朱");
hobbyMap.put("gongfu", "降龙十八掌");
map.put("hobby", hobbyMap);
Document doc = new Document(map); collection.insertOne(doc); client.close();
} public void update()
{
MongoClient client = new MongoClient("localhost",27017);
MongoDatabase db = client.getDatabase("test");
MongoCollection<Document> collection = db.getCollection("wjy"); Bson filter = new BasicDBObject("_id",new ObjectId("5850eacd7065f52b0eab7ff4")); Map<String,Object> map = new HashMap<String,Object>();
map.put("name", "张无忌");
map.put("age", 35);
Bson update = new BasicDBObject(map); collection.updateOne(filter, new BasicDBObject("$set",update)); client.close();
}
public void delete()
{
MongoClient client = new MongoClient("localhost",27017);
MongoDatabase db = client.getDatabase("test");
MongoCollection<Document> collection = db.getCollection("wjy"); collection.deleteOne(new BasicDBObject("_id",new ObjectId("5850eacd7065f52b0eab7ff4"))); client.close();
}
}

参考:
官方网站:http://www.mongodb.org/
MongoDB教程:https://www.w3cschool.cn/mongodb/mongodb-intro.html
  

NOSQL学习之二:MongoDB的更多相关文章

  1. NoSQL学习一:MongoDB下载与安装

    MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型.M ...

  2. Mongodb学习笔记二(Mongodb基本命令)

    第二章 基本命令 一.Mongodb命令 说明:Mongodb命令是区分大小写的,使用的命名规则是驼峰命名法. 对于database和collection无需主动创建,在插入数据时,如果databas ...

  3. MongoDB学习记录(二) - MongoDB的"增查改删"操作之"增"

    如果做插入文档操作的集合不存在,那么集合将被创建 db.collection.insertOne() insertOne为collection插入一条文档,如果文档的_id字段未指定,MongoDB会 ...

  4. NoSQL学习二:MongoDB基本管理命令

    MongoDB命令学习  一.MongoDB命令帮助 在安装MongoDB后,启动服务器进程(mongod),可以通过在客户端命令mongo实现对MongoDB的管理和监控: 这是MongoDB最上层 ...

  5. MongoDB学习笔记二- Mongoose

    MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...

  6. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  7. redis学习教程二《四大数据类型》

    redis学习教程二<四大数据类型>  四大数据类型包括:字符串    哈希    列表   集合一 : Redis字符串         Redis字符串命令用于管理Redis中的字符串 ...

  8. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  9. crawler4j 学习(二)

    crawler4j 学习(二) 实现控制器类以制定抓取的种子(seed).中间数据存储的文件夹.并发线程的数目: public class Controller { public static voi ...

随机推荐

  1. 关于virgo-tomcat-server-3.6.0.RELEASE配置文件修改说明

    Virgo项目Web服务器是EclipseRT项目的一部分,是一个完全模块化的Java运行时. Virgo自身就是设计为在标准OSGi框架实现(Equinox)之上的一个OSGi bundle集合. ...

  2. Unity3D笔记 Collect

    一.输入轴 默认输入轴: Horizontal 和 Vertical被映射到w, a, s, d键和方向键 Fire1, Fire2, Fire3被分别映射到Ctrl,Option(Alt)和Comm ...

  3. iOS - View的抖动效果

    /** * 抖动效果 * * @param view 要抖动的view */ - (void)shakeAnimationForView:(UIView *) view { CALayer *view ...

  4. 服务器群秒级别文件同步(ssh+SHELL)

    1.介绍 \ 2.业务服务器远程更新浏览服务器文件的脚本 #!/bin/bash operate=$ ip=$ conf_file="/var/www/html/test/ip_list&q ...

  5. vue--双向数据绑定

    <template> <div id="app"> <p>{{msg}}</p> <input v-model="m ...

  6. 解决 Python shell 中 Delete/Backspace 键乱码问题

    简述 进入 Python shell,按下 Delete/Backspace 键,会出现 ^H 字符.命令输入错误后只能从头开始,无法删除,让人很头疼.为了便于后期使用,分享一个一劳永逸的方式. 基本 ...

  7. CSU 1803 - 2016 - [同余]

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1803 给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量: 1. ...

  8. HDU 1045 - Fire Net - [DFS][二分图最大匹配][匈牙利算法模板][最大流求二分图最大匹配]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1045 Time Limit: 2000/1000 MS (Java/Others) Mem ...

  9. CodeForces - 847B Preparing for Merge Sort 二分

    http://codeforces.com/problemset/problem/847/B 题意:给你n个数(n<2e5)把它们分成若干组升序的子序列,一行输出一组.分的方法相当于不断找最长递 ...

  10. paas平台

    paas平台 定义:PaaS是云计算中重要的一类服务,为用户提供应用的全生命周期管理和相关的资源服务.通过PaaS,用户可以完成应用的构建.部署.运维管理,而不需要自己去搭建计算环境,如安装服务器.操 ...