第七周学习总结
NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。NoSQL 数据库的发展却能很好的处理这些大的数据。
安装MongoDB
使用MongoDB:
创建数据库基本语法:use DATABASE_NAME
如果你想查看所有数据库,可以使用show dbs命令:
数据结构由键值(key=>value)对组成:
数据的增删改查:
所以插入数据时:需要 例如:db.runoob.insert({“name”:“余紫玲”})
改变数据需要写出原来的数据,不然会出现错误如下:
正确如下:
删除数据:
删除数据库:
集合的有关操作:
创建集合基本语法:db.createCollection(name, options)
参数说明:
• name: 要创建的集合名称
• options: 可选参数, 指定有关内存大小及索引的选项
删除集合:db.collection.drop()
例子:
文档的操作:
插入文档:MongoDB 使用 insert() 或 save() 方法向集合中插入文档, 语法如下:db.COLLECTION_NAME.insert(document)
我们也可以将数据定义为一个变量,如下所示:
更新文档:
update()方法:
update() 方法用于更新已存在的文档。语法格式如下:
db.collection.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:可选,抛出异常的级别。
修改文档内容:
如果你要修改多条相同的文档,则需要设置 multi 参数为 true:例如
删除文档:
remove()方法:
db.collection.remove(
<query>,
<justOne>
)
remove() 方法已经过时了,现在官方推荐使用 deleteOne() 和 deleteMany() 方法。
如删除集合下全部文档:
db.inventory.deleteMany({})
删除 status 等于 A 的全部文档:
db.inventory.deleteMany({ status : "A" })
删除 status 等于 D 的一个文档:
db.inventory.deleteOne( { status: "D" } )
remove() 方法 并不会真正释放空间。
需要继续执行 db.repairDatabase() 来回收磁盘空间。
db.repairDatabase()
或者
db.runCommand({ repairDatabase: 1 })
如果你只想删除第一条找到的记录可以设置 justOne 为 1,如下所示:
db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):
db.col.remove({})
db.col.find()
MongoDB 查询文档
查询数据语法:db.collection.find(query, projection)
• query :可选,使用查询操作符指定查询条件
• projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
db.col.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
语法格式如下:
db.col.find({key1:value1, key2:value2}).pretty()
条件操作符:
条件操作符用于比较两个表达式并从mongoDB集合中获取数据。
在本章节中,我们将讨论如何在MongoDB中使用条件操作符。
MongoDB中条件操作符有:
• (>) 大于 - $gt
• (<) 小于 - $lt
• (>=) 大于等于 - $gte
• (<= ) 小于等于 - $lte
如果你想获取 “col” 集合中 “likes” 大于 100 的数据,你可以使用以下命令:
• db.col.find({likes : {$gt : 100}})
• 类似于SQL语句:
• Select * from col where likes > 100;
如果你想获取"col"集合中 “likes” 大于等于 100 的数据,你可以使用以下命令:
db.col.find({likes : {$gte : 100}})
类似于SQL语句:
Select * from col where likes >=100;
如果你想获取"col"集合中 “likes” 小于 150 的数据,你可以使用以下命令:
db.col.find({likes : {$lt : 150}})
类似于SQL语句:
Select * from col where likes < 150;
如果你想获取"col"集合中 “likes” 小于等于 150 的数据,你可以使用以下命令:
db.col.find({likes : {$lte : 150}})
类似于SQL语句:
Select * from col where likes <= 150;
如果你想获取"col"集合中 “likes” 大于100,小于 200 的数据,你可以使用以下命令:
db.col.find({likes : {$lt :200, $gt : 100}})
类似于SQL语句:
Select * from col where likes>100 AND likes<200;
$gt -------- greater than >
$gte --------- gt equal >=
$lt -------- less than <
$lte --------- lt equal <=
$ne ----------- not equal !=
$eq -------- equal =