mongodb 官网示例
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 官网示例相关推荐
- Ubuntu16.04下Mongodb官网卸载部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 前期博客 Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐) https://docs.mongodb.com/manual/tutorial/ins ...
- FineUI(开源版)v4.2.2发布(8年125个版本,官网示例突破300个)!
开源版是 FineUI 的基石,从 2008 年至今已经持续发布了 120 多个版本,拥有会员 15,000 多位,捐赠会员达到 1,200 多位. FineUI(开源版)v4.2.2 是 8 年 ...
- spark sql 官网示例
目录 1.Dataset/Dataframe基本操作 2.RDD转Dataset/Dataframe 3.不同数据集 对于spark,无论core还是streaming,亦或sql,structed ...
- Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐)
不多说,直接上干货! 在这篇博客里,我采用了非官网的安装步骤,来进行安装.走了弯路,同时,也是不建议.因为在大数据领域和实际生产里,还是要走正规的为好. Ubuntu16.04下Mongodb(离线安 ...
- skimage 学习第二天:ski官网示例程序总结(1)
skimage官网的示例.总结一下,作为以后研究的基础. http://scikit-image.org/docs/stable/auto_examples/index.html#examples-g ...
- kafka官网示例说明--KafkaConsumer
Kafka client会消费kafka cluster中的记录. 它将透明地处理Kafka集群中的服务器故障,并透明地适应它在集群内迁移的数据分区.该客户机还与服务器交互,以允许用户组使用消费者组来 ...
- mysql官网下载官网示例sql文件
1.https://dev.mysql.com/ 2. 3.下载自己需要的版本sql进行学习 4.查看官网对sql的描述
- Leaflet_创建地图(官网示例,可以直接运行)(2017-10-20)
官网:http://leafletjs.com/examples.html 快速启动指南 http://leafletjs.com/examples/quick-start/example.html ...
- mongodb官网文档阅读笔记:write concern
write concern保证了mongodb写操作的级别,不同的write concern设置相应了不同级别的写操作.设置的级别越高.那么写操作的性能的持久化做得越好,可是写性能也就越差. mong ...
最新文章
- Windows2003下面的批量创建随机用户程序(.NET多线程)
- 算法设计与分析——贪心算法——汽车加油问题
- 制作一个大风车加载条
- 【java】java JVM如何科学的设置内存参数 虚拟机调优案例
- C语言学习笔记---文件操作 fopen()函数 和 fclose()函数
- 动物行为检测计算机视觉_当动物行为研究遇见机器视觉——“红外热成像+计算机视觉”动物行为研究系统...
- Trick (八)——list 模拟 stack(Python)
- 计算机网络作业第六章,计算机网络与通信第6章习题.doc
- 计算机专业Java必读书单,高清PDF电子版下载
- 基于R语言的主成分分析
- 谷歌浏览器打不开的解决方法
- STM32的内部参照电压VREFINT(1.2V)和ADC参考电压Vref+如何区分呢
- 手把手教你:图像识别的垃圾分类系统
- 虚拟主播是什么,有什么技术原理?- 沉睡者IT
- linux rsync文件夹增量同步
- TJCTF之Bricked Binary
- 弟弟的作业(湖南省第六届程序设计大赛)
- CDMS系统插件开发介绍
- JAVA_HOME should point to a JDK not a JRE的解决办法
- VB字符串处理函数一览