0
点赞
收藏
分享

微信扫一扫

mongo基本命令

====MongoDB简介====

*MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

*MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。

*Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。


====主要功能特性====

MongoDB 的设计目标是高性能、可扩展、易部署、易使用,存储数据非常方便。

其主要功能特性如下:

(1)面向集合存储,容易存储对象类型的数据。在MongoDB 中数据被分组存储在集合中,集合类似RDBMS中的表,一个集合中可以存储无限多的文档。

(2)模式自由,采用无模式结构存储。在MongoDB 中集合中存储的数据是无模式的文档,采用无模式存储数据是集合区别于RDBMS 中的表的一个重要特征。

(3)支持完全索引,可以在任意属性上建立索引,包含内部对象。MongoDB的索引和RDBMS 的索引基本一样,可以在指定属性、内部对象上创建索引以提高查询的速度。除此之外,MongoDB 还提供创建基于地理空间的索引的能力。

(4)支持查询。MongoDB 支持丰富的查询操作,MongoDB 几乎支持SQL中的大部分查询。

(5)强大的聚合工具。MongoDB 除了提供丰富的查询功能外,还提供强大的聚合工具,如count、group 等,支持使用MapReduce 完成复杂的聚合任务。

(6)支持复制和数据恢复。MongoDB 支持主从复制机制,可以实现数据备份、故障恢复、读扩展等功能。而基于副本集的复制机制提供了自动故障恢复的功能,确保了集群数据不会丢失。

(7)使用高效的二进制数据存储,包括大型对象(如视频)。使用二进制格式存储,可以保存任何类型的数据对象。

(8)自动处理分片,以支持云计算层次的扩展。MongoDB 支持集群自动切分数据,对数据进行分片可以使集群存储更多的数据,实现更大的负载,也能保证存储的负载均衡。

(9)支持Perl、PHP、Java、C#、JavaScript、Ruby、C 和C++语言的驱动程序,MongoDB 提供了当前所有主流开发语言的数据库驱动包,开发人员使用任何一种主流开发语言都可以轻松编程,实现访问MongoDB 数据库。

(10)文件存储格式为BSON(JSON 的一种扩展)。BSON 是对二进制格式的JSON 的简称,BSON 支持文档和数组的嵌套。

(11)可以通过网络访问。可以通过网络远程访问MongoDB 数据库。

//上述解释:

================================================================================


//MongoDB已经在多个站点部署

====其主要场景如下====:

1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。

2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。

3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含//对MapReduce引擎的内置支持。

====不适用的场景如下====:

1)要求高度事务性的系统。

2)传统的商业智能应用。

3)复杂的跨文档(表)级联查询。


====================***********************===================================

安装与部署:

--------------配置YUM源仓库---------------------------------

vi /etc/yum.repos.d/mongo.repo

[mongodb-org]

name=MongoDB Repository

baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/

gpgcheck=1

enabled=1

gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc


-----------------安装MongoDB-------------------------------

yum  install -y mongodb-org


vi /etc/mongod.conf


bindIp: 0.0.0.0             #监听地址

port: 27017                 #监听端口


systemctl start mongod.service

netstat -anpt | grep 27017


/usr/bin/mongo


db.version()


show dbs;


db.getMongo() //查看当前数据库机器的连接地址


----------------开启多实例----------------------------------


cp -p /etc/mongod.conf /etc/mongod2.conf


vi /etc/mongod2.conf

  path: /data/mongodb/mongod2.log

  dbPath: /data/mongodb/mongo

  port: 27018


mkdir -p  /data/mongodb/

cd /data/mongodb/

mkdir mongo

touch mongod2.log

chmod 777 mongod2.log


mongod -f /etc/mongod2.conf

mongo --port 27018

netstat -ntap


--------------------基本操作-------------------------------


> use mydb; //不存在会创建,不建立集合又会删除


> db.createCollection('users')

> db.users.insert({"id":1,"name":"zhangsan","hobby":["game","talk","football"]})

> db.users.find()


批量插入,用循环:

for(var i=1;i<=100;i++)db.users.insert({"id":i,"name":"jack"+i})

查看其中某一条:

db.users.findOne({"id":10})


> a=db.users.findOne({"id":1})    //查找指定记录并赋予别名a

> typeof(a.id)   //查看属性类型

> typeof(a.name)  

> typeof(a.hobby)  


> db.users.update({"id":10},{$set:{"name":"tom"}})  //更改


> show collections //查看集合(show tables也行!)


> db.a.drop()    //删除集合a是集合名

> db.dropDatabase() //删除数据库*(先进库)


> for(var i=1;i<=100;i++)db.users.insert({"id":i,"name":"jack"+i})

> db.users.count() --统计共有多少条目

 显示

 100


-----------------导入导出-------------------------------


导出操作

[root@bogon ~]# mongoexport -d kgc -c users -o /opt/users.json

导入操作

[root@bogon opt]# mongoimport -d kgc -c user1 --file users.json

条件操作

[root@bogon opt]# mongoexport -d kgc -c user1 -q '{"id":{"$eq":10}}' -o /opt/top10.json


------------------备份与恢复--------------------------

[root@bogon opt]# mkdir /backup

[root@bogon opt]# mongodump -d kgc -o /backup/  #备份


[root@bogon backup]# mongorestore -d kgc2 --dir=/backup/kgc  #恢复

------------------复制数据库---------------------------


db.copyDatabase("kgc","kgc2")



-----------------克隆集合-------------------------------

mongo --port 27018


db.runCommand({"cloneCollection":"kgc.users","from":"192.168.235.190:27017"})


------------------创建管理用户------------------------------

> use admin

> db.createUser({"user":"root","pwd":"123","roles":["root"]})

> db.auth("root","123")


------------------进程管理----------------------------------

> db.currentOp()

    显示

    "opid" : 337,


> db.killOp(337)  //释放当前进程,重新加载刷新



举报

相关推荐

docker 基本命令

keepalived基本命令

kubectl基本命令

Flutter基本命令

docker基本命令

Mysql基本命令

0 条评论