Centos7 安装MongoDB与基础运用
1、关闭防火墙,selinuxsystemctl stop firewalld
setenforce 0
2、实现虚拟机能够上网,所以说要两块网卡,一块内网和一块外网(本机要能上网)
3、配置MongoDB的yum源
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
4、安装MongoDB:
yum install -y mongodb-org
5、修改mangodb的配置文件
vi /etc/mongod.conf
提示:0.0.0.0是所有地址
6、启动MongodDB
systemctl start mongod
netstat -anpt | grep mongod
7mongo登录:
mongo
8、MongoDB数据库基础操作
1、创建数据库
"use 数据库名称" use aa;
注:如果数据库不存在,则创建数据库,否则切换到指定数据库。
2、查看所有数据库
"show dbs"
刚创建的数据库 aa 并不在数据库的列表中, 要想显示它。
提示:我们需要向 aa数据库插入一些数据。
db.col.insert({"name":"李四"})
show dbs
MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数据库中。
注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
3、删除数据库
db.dropDatabase()
删除当前数据库,默认为 test,可以使用 db 命令查看当前数据库名。
注:只会删除show dbs显示的数据库,而且要进入到数据库中,再执行删除命令
show dbs
4、查看当前处于的数据库
db --当前处于数据库
系统默认的数据库是test
切换到aa数据库中在查看
5、mongodb集合操作
db.createCollection(name, { //集合的名字
capped: <Boolean>, //是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用,这个参数没有实际意义
autoIndexId: <Boolean>, //是否使用_id作为索引,默认为使用(true或false)
size: <number>, //限制集合使用空间的大小,默认为没有限制,size的优先级比max要高
max <number>} //集合中最大条数限制,默认为没有限制
)
参数说明:
name: 要创建的集合名称
options: 可选参数, 指定有关内存大小及索引的选项
options 可以是如下参数:
在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。
例子:
db.createCollection("c02")字段 类型 描述
capped 布尔 (可选)如果为 true,则创建固定集合。固定集合是指有着固定大小的集合,当达到最大值时,它会自动覆盖最早的文档。当该值为 true 时,必须指定 size 参数。
autoIndexId 布尔 (可选)如为 true,自动在 _id 字段创建索引。默认为 false。
size 数值 (可选)为固定集合指定一个最大值(以字节计)。如果 capped 为 true,也需要指定该字段。
max 数值 (可选)指定固定集合中包含文档的最大数量
db.createCollection("Centos7")
查看已有集合
show collections
创建集合例子:
创建固定集合 mycol,整个集合空间大小 6142800 KB, 文档最大个数为 10000 个。
db.createCollection("mycol", { capped : true, autoIndexId : true, size :
6142800, max : 10000 } )
在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。db.mycol2.insert({"name" : "云计算"})
删除集合
db.集合名称.drop()
插入文档
"db.集合名称.insert(文档)"
例子:
以下文档可以存储在 MongoDB 的 runoob 数据库 的 col 集合中:
db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '云计算',
url: 'www.lq.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
更新文档
"db.集合名称.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
```"
> 参数说明:
> query : update的查询条件,类似sql update查询内where后面的。
> update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
> upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
> multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
> writeConcern :可选,抛出异常的级别。
>
> 实例:通过 update() 方法来更新标题(title):
`db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})`
![](https://s2.51cto.com//images/blog/201901/18/6a935b0f9f480d7092aca4732c88938c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
只更新第一条记录:
`db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); `
全部更新:
`db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); `
只添加第一条:
`db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); `
全部添加进去:
`db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );`
全部更新:
`db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );`
只更新第一条记录:
`db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );`
删除文档
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
参数说明:
query :(可选)删除的文档的条件。
justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。
writeConcern :(可选)抛出异常的级别。
实例:
移除 title 为 'MongoDB 教程' 的文档:
db.col.remove({'title':'MongoDB 教程'})
![](https://s2.51cto.com//images/blog/201901/18/8ceac45e5939e3ae60723e3471c36d4d.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
如果多条相同数据,只想删除第一条找到的记录可以设置 justOne 为 1:
db.集合名称.remove(查询条件,1)
想删除所有数据,可以使用以下方式:
`db.col.remove({})`
`db.col.find(查询条件).pretty()`
说明:
pretty() 方法以格式化的方式来显示所有文档。
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开
实例:
且条件
通过 by 和 title 键来查询 菜鸟教程 中 MongoDB 教程 的数据:
`db.col.find({"by":"云计算", "title":"MongoDB 教程"}).pretty()`
![](https://s2.51cto.com/images/blog/202409/20033817_66ec7da94e6b959298.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
或者条件:
查询键 by 值为云计算 或键 title 值为 MongoDB 教程 的文档:
`db.col.find({$or:[{"by":"云计算"},{"title": "MongoDB 教程"}]}).pretty()`
且与或联合使用:
`db.col.find({"likes": {$gt:50}, $or: [{"by": "云计算"},{"title": "MongoDB 教程"}]}).pretty()`
实例:
获取 "col" 集合中 "likes" 大于 100 的数据:
`db.col.find({likes : {$gt : 100}})`
取"col"集合中 "likes" 大于等于 100 的数据:
`db.col.find({likes : {$gte : 100}})`
获取"col"集合中 "likes" 小于 150 的数据:
`db.col.find({likes : {$lt : 150}})`
获取"col"集合中 "likes" 小于等于 150 的数据:
`db.col.find({likes : {$lte : 150}})`
获取"col"集合中 "likes" 大于100,小于 200 的数据:
`db.col.find({likes : {$lt :200, $gt : 100}})`
mongodb排序
db.集合名称.find().sort({KEY:1})
使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。
mongodb索引
db.集合名称.createIndex(keys, options)
说明:
语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。
实例:
`db.col.createIndex({"title":1})`
多字段索引:
`db.col.createIndex({"title":1,"description":-1})`
转载于:https://blog.51cto.com/13701082/2344078