Mongodb深入浅出系列(1): 介绍

时间:2022-01-30 16:22:06

Mongodb深入浅出系列(1): 介绍

简介

MongoDB的mongo来源于单词humongous(其大无比的),它是一个开源免费的跨平台的面向文档的数据库。作为NoSQL数据库的一个代表,MongoDB区别于传统的以表结构为中心的关系性数据库,MongoDB更青睐于类似JSON写法的可动态变化schema的文档结构(MongoDB中称这种结构为BSON),JSON文件本身无需类似DB的schema即可被理解,这种方式使得不少类型的应用开发使用mongodb后更加简单和快捷。

License

MongoDB现由MongoDB Inc.公司开发,基于GPL和Apache License的组合。

发展轨迹

Mongodb深入浅出系列(1): 介绍

  • 2007年 一家叫做10gen的公司开始开发MongoDB作为其PAAS的组成部分。
  • 2009年,10gen迁移到开源开发,同时提供商业支持和其他服务。
  • 2013年,10gen正式更名为MongoDB Inc.

MongoDB的特点

区别于传统的关系型数据库,mongodb比较突出的特点比如:
- 无需定义schema,是schema free的数据库
- 面向集合存储,易存储对象类型的数据
- 支持动态查询
- 支持完全索引,包含内部对象
- 支持查询
- 支持复制和故障恢复
- 使用高效的二进制数据存储,包括大型对象(如视频等)
- 自动处理碎片,以支持云计算层次的扩展性
- 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言
- 文件存储格式为BSON
- 可通过网络访问

概念Mapping

关系型数据库 MongoDB
database database
table collection
row JSON文档等

MongoDB的安装和使用

参照文档 http://blog.csdn.net/liumiaocn/article/details/52138476

初试mongodb

连接到mongodb

[root@host31 ~]# docker pull mongo
Using default tag: latest
latest: Pulling from library/mongo
5c68a10e9f3f: Pull complete
0110f95fa9c8: Pull complete
0cba4a42bc41: Pull complete
a6eafd7fba3f: Pull complete
703d9d7e0e21: Pull complete
6c18d5bc22c9: Pull complete
fd3fcba178e3: Pull complete
c8b9b5488049: Pull complete
41f37d58ab4c: Pull complete
Digest: sha256:beff97308c36f7af664a1d04eb6ed09be1d14c17427065b2ec4b0de90967bb3f
Status: Downloaded newer image for mongo:latest
[root@host31 ~]#
[root@host31 ~]# docker run -d --name=mongo mongo
b2426160fd48b9614636c3466b8d6804f00a0c1d26373e1b7a37991e648f3e3b
[root@host31 ~]# docker exec -it mongo /bin/bash
root@b2426160fd48:/#

连接mongo

root@b2426160fd48:/# mongo
MongoDB shell version: 3.2.9
connecting to: test
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:
2016-08-27T23:58:55.597+0000 I CONTROL [initandlisten]
2016-08-27T23:58:55.597+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2016-08-27T23:58:55.597+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2016-08-27T23:58:55.597+0000 I CONTROL [initandlisten]
2016-08-27T23:58:55.597+0000 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2016-08-27T23:58:55.597+0000 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2016-08-27T23:58:55.597+0000 I CONTROL [initandlisten]
>

help命令

> help
db.help() help on db methods
db.mycoll.help() help on collection methods
sh.help() sharding helpers
rs.help() replica set helpers
help admin administrative help
help connect connecting to a db help
help keys key shortcuts
help misc misc things to know
help mr mapreduce

show dbs show database names
show collections show collections in current database
show users show users in current database
show profile show most recent system.profile entries with time >= 1ms
show logs show the accessible logger names
show log [name] prints out the last segment of log in memory, 'global' is default
use <db_name> set current database
db.foo.find() list objects in collection foo
db.foo.find( { a : 1 } ) list objects in foo where a == 1
it result of the last line evaluated; use to further iterate
DBQuery.shellBatchSize = x set default number of items to display on shell
exit quit the mongo shell
>

显示db列表

> show dbs
local 0.000GB
>