1.安装

最新版本为4.0.6,装完可以执行mongo -version查看

下载tar包,解压完

确实够简洁呀,就bin目录,然后在/etc/profile配下环境变量source下就ok!

创建db目录

mkdir -p /data/db

官网还让创建/var/lib/mongo和/var/log/mongo,创建完启动发现这俩目录也没写入数据。

2.启动

临时启动

mongod

看到等待端口连接就ok了,貌似3.2以后不提供web ui界面了,28017端口无法访问了。

可以下载一个RoBo 3T,供可视化。

默认外网无法连接,可以临时启动时,加--bind_ip_all,或者--bind_ip <address>指定ip

 mongod --bind_ip_all

也可以创建配置文件,然后启动的时候

mongod -f 配置文件

后台启动

nohup或者&

3.与mysql对比

官网截的图,mongo的collection就是mysql的table,document文档就是row,

而field字段就是column,都是三层结构。

下面是RoBo 3T的截图

类似json数据,每个文档document都有一个类型为ObjectId的_id。

4.mongo的curd

1.查看数据库

show dbs

2.查看当前数据库

db

3.进入某个数据库/如果不存在,新建

use dbName

库无数据的话,此时show dbs,看不到该库

4.查看库的collection

show collections

5.创建collection

collection刚创建无数据时,show collections,看不到该collection

db.newCollection

6.插入数据

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

7.插入多条

db.zlq.insertMany([// MongoDB adds the _id field with an ObjectId if _id is not present{ item: "journal", qty: 25, status: "A",size: { h: 14, w: 21, uom: "cm" }, tags: [ "blank", "red" ] },{ item: "notebook", qty: 50, status: "A",size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank" ] },{ item: "paper", qty: 100, status: "D",size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank", "plain" ] },{ item: "planner", qty: 75, status: "D",size: { h: 22.85, w: 30, uom: "cm" }, tags: [ "blank", "red" ] },{ item: "postcard", qty: 45, status: "A",size: { h: 10, w: 15.25, uom: "cm" }, tags: [ "blue" ] }
]);

8.查collection所有数据

db.zlq.find( {} )

9.过滤

db.zlq.find( { status: "D" } )
//select * from zlq where status="D"

10.匹配嵌入的document/类似json数组的小json

db.zlq.find( { size: { h: 14, w: 21, uom: "cm" } } )

11.匹配嵌入document的字段

db.zlq.find( { "size.uom": "in" } )

12.匹配数组里的字段

db.zlq.find( { tags: "red" } )

13.匹配数组

db.zlq.find( { tags: ["red", "blank"] } )
//这样的话tags:["red","blank","blue"]匹配不到

14.删库/删collection

db.dropDatabase()
db.zlq.drop()

15.删document

db.zlq.deleteOne({status:"D"})//只删除一行,即使多行符合
db.zlq.deleteMany({status:"A"})

5.mongo的aggregation

db.zlq.aggregate([ {$group:{_id:"$status",total:{$sum:"$qty"}}}])
//select status,sum(qty) from zlq group by status

mongo的mapreduce

对于熟悉hadoop的,就很容易理解了。

官网截的图,首先将每条数据map成key,value,hadoop的话,执行reduce相同的key会聚合成

key,Iterator(value),mongo的话是key,Array(value),然后执行sum

先过滤,再map-->reduce

distinct,返回一个数组

6.与mysql curd对比

<1>create&alter

sql mongob
CREATE TABLE people (id MEDIUMINT NOT NULLAUTO_INCREMENT,user_id Varchar(30),age Number,status char(1),PRIMARY KEY (id)
)
db.people.insertOne( {user_id: "abc123",age: 55,status: "A"} )

db.createCollection("people")

ALTER TABLE people
ADD join_date DATETIME
db.people.updateMany({ },{ $set: { join_date: new Date() } }
)
ALTER TABLE people
DROP COLUMN join_date
db.people.updateMany({ },{ $unset: { "join_date": "" } }
)
CREATE INDEX idx_user_id_asc
ON people(user_id)
db.people.createIndex( { user_id: 1 } )
CREATE INDEXidx_user_id_asc_age_desc
ON people(user_id, age DESC)
db.people.createIndex( { user_id: 1, age: -1 } )

DROP TABLE people
db.people.drop()

<2>insert

INSERT INTO people(user_id,age,status)
VALUES ("bcd001",45,"A")
db.people.insertOne({ user_id: "bcd001", age: 45, status: "A" }
)

<3>select

SELECT *
FROM people
db.people.find()
SELECT id,user_id,status
FROM people
db.people.find({ },{ user_id: 1, status: 1 }
)
SELECT user_id, status
FROM people
db.people.find({ },{ user_id: 1, status: 1, _id: 0 }
)
SELECT *
FROM people
WHERE status = "A"
db.people.find({ status: "A" }
)
SELECT user_id, status
FROM people
WHERE status = "A"
db.people.find({ status: "A" },{ user_id: 1, status: 1, _id: 0 }
)
SELECT *
FROM people
WHERE status != "A"
db.people.find({ status: { $ne: "A" } }
)
SELECT *
FROM people
WHERE status = "A"
AND age = 50
db.people.find({ status: "A",age: 50 }
)
SELECT *
FROM people
WHERE status = "A"
OR age = 50
db.people.find({ $or: [ { status: "A" } , { age: 50 } ] }
)
SELECT *
FROM people
WHERE age > 25
db.people.find({ age: { $gt: 25 } }
)
SELECT *
FROM people
WHERE age < 25
db.people.find({ age: { $lt: 25 } }
)
SELECT *
FROM people
WHERE age > 25
AND   age <= 50
db.people.find({ age: { $gt: 25, $lte: 50 } }
)
SELECT *
FROM people
WHERE user_id like "%bc%"
db.people.find( { user_id: /bc/ } )

-or-

db.people.find( { user_id: { $regex: /bc/ } } )
SELECT *
FROM people
WHERE user_id like "bc%"
db.people.find( { user_id: /^bc/ } )

-or-

db.people.find( { user_id: { $regex: /^bc/ } } )
SELECT *
FROM people
WHERE status = "A"
ORDER BY user_id ASC
db.people.find( { status: "A" } ).sort( { user_id: 1 } )
SELECT *
FROM people
WHERE status = "A"
ORDER BY user_id DESC
db.people.find( { status: "A" } ).sort( { user_id: -1 } )
SELECT COUNT(*)
FROM people
db.people.count()

or

db.people.find().count()
SELECT COUNT(user_id)
FROM people
db.people.count( { user_id: { $exists: true } } )

or

db.people.find( { user_id: { $exists: true } } ).count()
SELECT COUNT(*)
FROM people
WHERE age > 30
db.people.count( { age: { $gt: 30 } } )

or

db.people.find( { age: { $gt: 30 } } ).count()
SELECT DISTINCT(status)
FROM people
db.people.aggregate( [ { $group : { _id : "$status" } } ] )

or, for distinct value sets that do not exceed the BSON size limit

db.people.distinct( "status" )
SELECT *
FROM people
LIMIT 1
db.people.findOne()

or

db.people.find().limit(1)
SELECT *
FROM people
LIMIT 5
SKIP 10
db.people.find().limit(5).skip(10)
EXPLAIN SELECT *
FROM people
WHERE status = "A"
db.people.find( { status: "A" } ).explain()

<4>update

UPDATE people
SET status = "C"
WHERE age > 25
db.people.updateMany({ age: { $gt: 25 } },{ $set: { status: "C" } }
)
UPDATE people
SET age = age + 3
WHERE status = "A"
db.people.updateMany({ status: "A" } ,{ $inc: { age: 3 } }
)

<5> delete Records

DELETE FROM people
WHERE status = "D"
db.people.deleteMany( { status: "D" } )
DELETE FROM people
db.people.deleteMany({})

mongodb 官网示例相关推荐

  1. Ubuntu16.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 前期博客 Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...

  2. FineUI(开源版)v4.2.2发布(8年125个版本,官网示例突破300个)!

    开源版是 FineUI 的基石,从 2008 年至今已经持续发布了 120 多个版本,拥有会员 15,000 多位,捐赠会员达到 1,200 多位.   FineUI(开源版)v4.2.2 是 8 年 ...

  3. spark sql 官网示例

    目录 1.Dataset/Dataframe基本操作 2.RDD转Dataset/Dataframe 3.不同数据集 对于spark,无论core还是streaming,亦或sql,structed ...

  4. Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 在这篇博客里,我采用了非官网的安装步骤,来进行安装.走了弯路,同时,也是不建议.因为在大数据领域和实际生产里,还是要走正规的为好. Ubuntu16.04下Mongodb(离线安 ...

  5. skimage 学习第二天:ski官网示例程序总结(1)

    skimage官网的示例.总结一下,作为以后研究的基础. http://scikit-image.org/docs/stable/auto_examples/index.html#examples-g ...

  6. kafka官网示例说明--KafkaConsumer

    Kafka client会消费kafka cluster中的记录. 它将透明地处理Kafka集群中的服务器故障,并透明地适应它在集群内迁移的数据分区.该客户机还与服务器交互,以允许用户组使用消费者组来 ...

  7. mysql官网下载官网示例sql文件

    1.https://dev.mysql.com/ 2. 3.下载自己需要的版本sql进行学习 4.查看官网对sql的描述

  8. Leaflet_创建地图(官网示例,可以直接运行)(2017-10-20)

    官网:http://leafletjs.com/examples.html 快速启动指南 http://leafletjs.com/examples/quick-start/example.html ...

  9. mongodb官网文档阅读笔记:write concern

    write concern保证了mongodb写操作的级别,不同的write concern设置相应了不同级别的写操作.设置的级别越高.那么写操作的性能的持久化做得越好,可是写性能也就越差. mong ...

最新文章

  1. Windows2003下面的批量创建随机用户程序(.NET多线程)
  2. 算法设计与分析——贪心算法——汽车加油问题
  3. 制作一个大风车加载条
  4. 【java】java JVM如何科学的设置内存参数 虚拟机调优案例
  5. C语言学习笔记---文件操作 fopen()函数 和 fclose()函数
  6. 动物行为检测计算机视觉_当动物行为研究遇见机器视觉——“红外热成像+计算机视觉”动物行为研究系统...
  7. Trick (八)——list 模拟 stack(Python)
  8. 计算机网络作业第六章,计算机网络与通信第6章习题.doc
  9. 计算机专业Java必读书单,高清PDF电子版下载
  10. 基于R语言的主成分分析
  11. 谷歌浏览器打不开的解决方法
  12. STM32的内部参照电压VREFINT(1.2V)和ADC参考电压Vref+如何区分呢
  13. 手把手教你:图像识别的垃圾分类系统
  14. 虚拟主播是什么,有什么技术原理?- 沉睡者IT
  15. linux rsync文件夹增量同步
  16. TJCTF之Bricked Binary
  17. 弟弟的作业(湖南省第六届程序设计大赛)
  18. CDMS系统插件开发介绍
  19. JAVA_HOME should point to a JDK not a JRE的解决办法
  20. VB字符串处理函数一览

热门文章

  1. 大学生踏入社会前须领悟五句话(收藏)
  2. 7zip压缩整个目录
  3. Python基础知识:数据类型与函数
  4. 史上最全最丰富最精美的PPT模板库(精选1200套各类风格高质量PPT模板)强烈推荐下载保存
  5. UNIX编程—网络socket
  6. 编写用户帮助/操作手册指南
  7. mklink 搜狗五笔输入法使用拼音输入法的颜文字工具
  8. linux 板子修改ip地址
  9. VB.NET——宏观把控
  10. 招聘预示小米整车研发将落地上海徐汇