虽说现在关系型数据库还是主流,但是面对某些需求的时候,需要非关系型数据库来补充它,学习一个主流的NoSQL数据库还是很有必要的。MongoDB是一个功能丰富的NoSQL数据库,本文整理了它最常用的部分形成了这篇入门教程,希望对大家有所帮助。
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系型数据库的。
以前写的MongoDB安装教程是基于3.2版本的,发现有的朋友使用新版本安装有问题,这次我们使用最新版本再来安装一次,本文所使用的MongoDB版本为4.2.5,总的来说,新版本的安装更简单了。
Windows x64
版本安装,下载地址:www.mongodb.com/download-ce…MongoDB是非关系型数据库当中最像关系型数据库的,所以我们通过它与关系型数据库的对比,来了解下它的概念。
SQL概念 | MongoDB概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
use
命令去创建数据库,当插入第一条数据时会创建数据库,例如创建一个test
数据库;> use test switched to db test > db.article.insert({name:"MongoDB 教程"}) WriteResult({ "nInserted" : 1 }) > show dbs admin 0.000GB config 0.000GB local 0.000GB test 0.000GB
dropDatabase()
方法来删除;> db.dropDatabase() { "dropped" : "test", "ok" : 1 } > show dbs admin 0.000GB config 0.000GB local 0.000GB
createCollection()
方法来创建集合,例如创建一个article
集合;> use test switched to db test > db.createCollection("article") { "ok" : 1 } > show collections article
drop()
方法来删除集合,例如删除一个article
集合;> db.article.drop() true > show collections
上面的数据库和集合操作是在MongoDB的客户端中进行的,下面的文档操作都是在Robomongo中进行的。
insert()
方法向集合中插入文档,语法如下;db.collection.insert(document)
insert()
方法来插入文档,例如插入一个article
文档;db.article.insert({title: 'MongoDB 教程', description: 'MongoDB 是一个 Nosql 数据库', by: 'Andy', url: 'https://www.mongodb.com/', tags: ['mongodb', 'database', 'NoSQL'], likes: 100 })
find()
方法可以获取文档,例如获取所有的article
文档;db.article.find({})
{ "_id" : ObjectId("5e9943661379a112845e4056"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Andy", "url" : "https://www.mongodb.com/", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100.0 }
update()
来更新集合中的文档,语法如下;db.collection.update(
MongoDB 教程
的所有文档的title修改为MongoDB
;db.article.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})
update()
方法以外,save()
方法可以用来替换已有文档,语法如下;db.collection.save(document)
5e9943661379a112845e4056
的文档的title改为MongoDB 教程
;db.article.save({ "_id" : ObjectId("5e9943661379a112845e4056"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Andy", "url" : "https://www.mongodb.com/", "tags" : [ "mongodb", "database", "NoSQL" ], "likes" : 100.0 })
remove()
方法来删除集合中的文档,语法如下;db.collection.remove(
MongoDB 教程
的所有文档;db.article.remove({'title':'MongoDB 教程'})
find()
方法来查询文档,语法如下;db.collection.find(query, projection) # query:查询条件,类似于SQL中的WHERE部分 # projection:可选,使用投影操作符指定返回的键
article
集合中的所有文档;操作 | 格式 | SQL中的类似语句 |
---|---|---|
等于 | { |
where title = 'MongoDB 教程' |
小于 | { |
where likes < 50 |
小于或等于 | { |
where likes <= 50 |
大于 | { |
where likes > 50 |
大于或等于 | { |
where likes >= 50 |
不等于 | { |
where likes != 50 |
MongoDB 教程
的所有文档;