MongoDB CLI 用法

一、简介

MongoDB 是一款流行的开源文档型数据库。

MongoDB 数据库的一些特性:

  • 面向文档存储,基于JSON/BSON 可表示灵活的数据结构
  • 动态 DDL能力,没有强Schema约束,支持快速迭代
  • 高性能计算,提供基于内存的快速数据查询
  • 容易扩展,利用数据分片可以支持海量数据存储
  • 丰富的功能集,支持二级索引、强大的聚合管道功能,为开发者量身定做的功能,如数据自动老化、固定集合等等。
  • 跨平台版本、支持多语言SDK..

MongoDB 在概念模型上参考了 SQL数据库

SQL概念MongoDB概念
databasedatabase
tablecollection
rowdocument
columnfield
primary key_id
foreigen keyreference
viewview
indexindex
  • database 数据库,与SQL的数据库(database)概念相同,一个数据库包含多个集合(表)
  • collection 集合,相当于SQL中的表(table),一个集合可以存放多个文档(行)。 不同之处就在于集合的结构(schema)是动态的,不需要预先声明一个严格的表结构。更重要的是,默认情况下 MongoDB 并不会对写入的数据做任何schema的校验。
  • document 文档,相当于SQL中的行(row),一个文档由多个字段(列)组成,并采用bson(json)格式表示。
  • field 字段,相当于SQL中的列(column),相比普通column的差别在于field的类型可以更加灵活,比如支持嵌套的文档、数组。
    此外,MongoDB中字段的类型是固定的、区分大小写、并且文档中的字段也是有序的。
  • _id 主键,MongoDB 默认使用一个_id 字段来保证文档的唯一性。
  • reference 引用,勉强可以对应于 外键(foreign key) 的概念,之所以是勉强是因为 reference 并没有实现任何外键的约束,而只是由客户端(driver)自动进行关联查询、转换的一个特殊类型。
  • view 视图,MongoDB 3.4 开始支持视图,和 SQL 的视图没有什么差异,视图是基于表/集合之上进行动态查询的一层对象,可以是虚拟的,也可以是物理的(物化视图)。
  • index 索引,与SQL 的索引相同。

BSON 数据类型

MongoDB 文档可以使用 Javascript 对象表示,从格式上讲,是基于 JSON 的。JSON 有自己的短板,比如无法支持像日期这样的特定数据类型,因此 MongoDB 实际上使用的是一种扩展式的JSON,叫 BSON(Binary JSON)。BSON 所支持的数据类型包括:

TypeNumberAlias
32-bit integer16整数
64-bit integer18长整数
Double1浮点数
Boolen8布尔值
String2字符串
Object3对象
Array4数组
Date9日期
Binary data5二进制数据
ObjectId7文档ID
Null10空值
Timestamp17时间戳
Decimal 12819高精度浮点数
Min key-1最小值
Max key127最大值

二、安装及使用

1、Import the public key used by the package management system

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -

2、Create a list file for MongoDB (Ubuntu 16.04) 

echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

3、Reload local package database 

sudo apt-get update

4、Install the MongoDB packages

sudo apt-get install -y mongodb-org

安装完后,在/usr/bin/目录下有mongod和mongo两个可执行文件,mongod是服务器端,mongo是客户端。要启动mongodb服务,需要先开启mongod。

5、Start MongoDB

sudo service mongod start

 如果报错:Failed to start mongod.service: Unit mongod.service not found.

sudo systemctl enable mongod

6、Verify that MongoDB has started successfully

sudo service mongod status

如果输出有Active: active (running),说明启动成功。通过输出还可以看到实际运行了/usr/bin/mongod --config /etc/mongod.conf ,从/etc/mongod.conf中可以看到存储路径dbPath: /var/lib/mongodb、日志路径path: /var/log/mongodb/mongod.log、端口port: 27017等。

7、Restart MongoDB

sudo service mongod restart

8、Begin using MongoDB

mongo

9、Stop MongoDB

sudo service mongod stop

10、Remove Packages

sudo apt-get purge mongodb-org*

11、Remove MongoDB databases and log files

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb

 数据库位置:

locate mongodb.conf

/etc/mongodb.conf
/etc/init/mongodb.conf

cat /etc/mongod.conf

# Where and how to store data.
storage:
  dbPath: /var/lib/mongodb

# where to write logging data.
systemLog:
  path: /var/log/mongodb/mongod.log

# network interfaces
net:
  port: 27017
  bindIp: 127.0.0.1

cat /etc/hosts

127.0.0.1    localhost


shell 操作数据库

进入MongoDB shell

mongo

想知道mongodb支持哪些命令,可以直接输入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

  MongoDB Shell常用命令:

show dbs     列出所有DB
use dbname   切换当前DB
show tables  或 show collections  列出当前DB的所有表/集合
show users   列出当前DB的所有用户
show profile 列出当前DB的所有慢查询
show logs     列出运行日志

例子:

> show dbs
admin       0.000GB
config      0.000GB
local       0.000GB
alan_test  0.000GB
> use alan_test
switched to db alan_test
> db.createCollection("data")
{ "ok" : 1 }
> show tables
data
> db.data.find()
{ "id" : ObjectId("1234abcd"), "name" : "alan", "age" : NumberLong(18), "weight" : NumberLong(50), "habbit" : [ { "address" : [ "beijing/haidian" ]} ], "sister" : [ ], "first_id" : [ NumberLong(0) ], "is_good" : true}
> db.data.drop()
true
> 

在Mongo集合中使用特殊字符

> db.hello-world.find()
2020-01-15T17:07:30.953+0800 E  QUERY    [js] uncaught exception: ReferenceError: world is not defined :
@(shell):1:1
> db.hello-world.drop()
2020-01-15T17:18:42.396+0800 E  QUERY    [js] uncaught exception: ReferenceError: world is not defined :
@(shell):1:1

对特殊字符正确转义处理:
db["hello-world"].find()

> db["hello-world"].drop()
true

三、robo 3T

robo 3T是mongodb的一个非常好用的可视化管理工具,曾经名叫robomongo,现被收购后改名为robo 3T。

robomongo官网下载Linux版本(Download Your Double Pack=>Linux=>填写个人信息=>下载)

解压安装包:

tar -xvzf studio-3t-robo-3t-linux-double-pack.tar.gz
tar -xvzf robo3t-1.3.1-linux-x86_64-7419c406.tar.gz

移到/usr/local/bin目录下,并改名叫robomongo:

sudo mv robo3t-1.3.1-linux-x86_64-7419c406 /usr/local/bin/robomongo

在~/.bashrc添加别名:

alias robomongo="/usr/local/bin/robomongo/bin/robo3t"
source ~/.bashrc # 立即生效

以后打开终端,输入robomongo就可以启动robo 3T了。

在弹出的MongoDB Connections窗口,点击Create=>Save=>Connect。

可以看到GUI的内容和shell的输出对应。

 

注意:打开robo 3T前需要启动mongod服务,robo 3T才能链接到mongodb数据库。

参考:

Install MongoDB Community Edition on Ubuntu

Failed to start mongod.service: Unit mongod.service not found

了解 MongoDB 看这一篇就够了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值