走进MongoDB(一)

本文从以下几个知识点进行介绍:

一、mongodb简介

二、在windows操作系统上安装、配置MongoDB

三、The mongo shell的简单使用

四、MongoDB CRUD Operations(增删改查)

一、mongodb简介

Mongodb是一款开源的文档数据库。

Document datase

mongodb的一条数据记录就是一个文档,它是由键-值对组成的一个数据结构。Mongodb文档和json对象很相似。一个键值可能会包含其它的文档、数据或者是文档数组。

{

Name:”sue”,

Age:26,

Gruops:[“news”,”sports”]

}

Key features

High performance 高性能

支持嵌入式的数据模型 来降低 I/O 活动

索引支持更快速的查询,并且可以包含嵌入的文档和数组。

Rich query language 丰富的查询语言

Data aggregation

Text search and geospatial queries (地理空间查询)

High availability 高可用性

称为replica set (复制集),Replication facility提供:

自动的失效备援

数据冗余

Horizontal scalability 水平扩展或横向扩展

横向扩展是Mongodb核心功能的一部分:

通过机器集群分区分配数据。

Mongodb3.4支持创建基于 shard key 的数据区域。在一套平衡集群系统上,Mongodb直接在数据区域内部的分片上直接读写数据。

Support for multiple storage engines

WiredTiger Storage Engine

MMAPv1 Storage Engine

另外,MongoDB提供了可插拔的存储引擎接口,允许第三方来开发存储引擎

Databases and Collections

Mongodb collections(集合中)保存数据记录

Databases

mongodb中,数据库持有 了文档(documents)的集合(collection),

使用数据库:

use myDB

Create a Database

当你第一次给数据库存数据的时候,也就创建了数据库。例如:切换到一个不存在的数据库,然后插入一条数据:

Use myNewDB

db.myNewCollection1.insertOne({x:1})      //创建了myNewDB数据库,也创建了myNewCollection1集合。

Collections

Mongodbcollections中存储documents。集合和关系数据库的表是类似的。

Create a collection(隐式创建方式)

在第一次给一个集合存储数据时,也就创建了此集合:

db.myNewCollection2.insertOne({x:1})

db.myNewCollection3.createIndex({y:1})

Explicit creation(直接创建)

db.createCollection() 可以使用多种和collectiondocument相关的选项参数。

Document validation

默认,集合不会要求文档必须要用于完全一致的模式;也就是说在一个数据集合内、不需要使用相同的字段(fields)集合,不同的文档上同一字段的数据类型也可以不必相同。

Mongodb3.2开始,可以在collection中设置文档的验证规则。

Modifying Document Structure

可以任意的修改一个集合中的文档结构。例如,添加新的字段、删除字段、改变字段的数据类型等...

二、在windows操作系统上安装MongoDB

支持和要求

version2.2之后不再支持XP系统。要求使用win server 2008 r2win vista等更高版本的win操作系统。

安装:.

msi傻瓜式安装

设置mongodb环境:(设置数据库的数据存放目录)

C:mongodbserver3.4mongod.exe --dbpath c:datadb

执行成功db目录下生成系统数据库文件,默认端口:27017

启动服务:(直接运行mongod程序即可)

Command prompt: C:mongodbserver3.4mongod.exe

默认把安装磁盘根目录下datadb作为数据库文件路径。如果设置的data目录不在磁盘根目录下,需要 --dbpath 指定data路径。

连接mongodb服务器

执行mongo.exe 客户端程序即可。

关闭服务

mongod终端键入:control+c

mongodb配置为windows系统服务

1.创建数据目录和日志目录,如:

Mkdir c:datadb

Mkdir c:datalog

2.创建配置文件,如:

创建C:mongodbserver3.4mongod.cfg,指定systemLog.path  storage.dbpath

systemLog:

    destination: file

    path: D:databaseMongoDBdatalogmongod.log

storage:

dbPath: D:databaseMongoDBdatadb

3.注册mongodb为系统为服务

C:mongodbserver3.4mongod.exe --config “C:mongodbserver3.4mongod.cfg” --install

4.启动、关闭服务

Net start/stop mongodb

三、The mongo shell

查看正在使用的数据库:

db

默认返回test(默认的数据库)

切换/创建数据库:

Use <database>   (你可以切换到一个不存在的数据库,如果你插入了一条数据,数据库即被创建)

Use myNewDatabase

Db.myCollection.insertOne( { x:1 } )

数据查询

Db.mycollection.find()

多行操作

若命令(){}[] 没有成对出现,则可以换行继续键入操作

使用tab键进行命令提示

如,db.mycollection.c<tab> 会列出所有以c开头的可用函数。

退出mongo shell

quit() or 使用 <Ctrl-C> shortcut.

Mongo shell的配置

自定义命令提示符:(显示命令的行号)

cmdCount=1

Prompt=function(){return (cmdCount++)+”>”}

Change the mongo shell batch size

DBQuery.shellBatchSize=10;

访问mongo shell帮助信息

命令行帮助  mongo  --help

shell帮助(in the mongo shellhelp

Show dbs 查看所有数据库

db.help() 数据库对象的方法

db.insertOne 查看方法的实现代码

Collection 帮助

show collections

db.collection.help()

db.collection.save 查看collection方法的实现

Cursor 帮助

Db.collection.find().help()

Db.collection.find().toArray 方法实现代码

Wrapper object 帮助

Write scripts for the mongo shell

这里支持在mongo shell 使用javascipt脚本来进行数操作

Opening new connections

mongo shell或者js文件中,初始化连接数据库实例的Mongo()构造函数。

New Mongo()

New Mongo(<host>)

New Mongo(<host:port>)

例如:

Conn=new Mongo();

Db=conn.getDb(“myDatabase”);

或者:db=connect(“localhost:27010/myNewDatabase”);

Differences between interactive and scripted mongo

使用--eval选项来执行javascript

mongo test --eval “print(db.getCollectionNames())”;

Execute a javascript file:

Mongo loclhost:27017/test myjsfile.js

Mongo <js file path>

可以在mongo shell界面,使用load() 函数执行js文件:

Load(“myjstest.js”) 注:文件路径使用 \ / 分开,当前默认路径为data/db

Data types in th e mongo shel

Types

Date  (内部存储为64bit 毫秒数、unix纪元(1970开始))

Date() String形式返回当前日期  typeof->String

New Date()  返回日期对象  instanceof Date=true  typeof -> object

ISODate()    返回日期对象  instanceof Date=true  typeof -> object

ObjectId

Mongo shell提供了ObjectId()包装类。new ObjectId 生成 一个新的id

NumberLong

Mongo shell默认把所有数字当做浮点型的值。提供包装类:NumberLong()操作64bit整数。

NumberInt

使用NumberInt()构造函数来显示的指定一个额32bit 整数。

NumberDecimalnew in v-3.4

NumberDecimal()显示指定128-bit基于十进制小数的浮点数,用于解决金融、货币上的计算问题。

Equality and sort order

Check types in the mongo shell

Instanceof   return boolean

Typeof  直接返回字段的类型

四、MongoDB CRUD Operations

所有对单个documents的操作都是原子性的

Create operation

collection中插入一个新的documents

db.collection.insertOne()

Db.collection.inesrtMany()

Read operation

db.collection.find()

Update operation

db.collection.updateOne()

db.collection.updateManu()

db.collection.replaceOne()

Delete operation

db.collection.deleteOne()

db.collection.deleteMany()

Bulk write Opeation(同时执行多种操作)

bulkWrite() 支持方法:insertOne updateOne updateMany deleteOne deleteMany

SQL to MongoDB Mapping Chartsqlmongo比较)

Terminology and concepts

Read Concern/Isolationsqlmongo比较)

Read concern levels

Local (default)

Majority

Linearizable (v3.4开始支持)

 
原文地址:https://www.cnblogs.com/ahguSH/p/7406779.html