MongoDB
Windows上安装方法:
- 下载,安装,可以从customer自定义安装路径后,例如我设置的安装路径为”F:\MongoDB\”,一直Next直到安装结束。
- 配置
- 将安装路径下的bin目录添加到环境变量PATH中,例如我的是”F:\MongoDB\bin”;
- 配置MongoDB的存储路径,例如我配置的是”F:\MongoDB\data\db”,就是在”F:\MongoDB\”这个文件夹下新建”data\db”这种目录结构;
- 将MongoDB注册为服务,以方便日后的使用:
- 打开cmd命令行,输入(将logpath 和dbpath 改成自己的):
mongod --logpath "F:\MongoDB\logs.log" --dbpath "F:\MongoDB\data\db" --install
- 注册完成,便可通过输入:
net start mongodb
便可启动服务。
- 注册完成,便可通过输入:
- 打开cmd命令行,输入(将logpath 和dbpath 改成自己的):
- 在命令行输入
mongo
之后便可以打开shell对MongoDB进行操作啦~
基本概念
SQL概念 | MongoDB概念 | 说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据行/文档 |
column | field | 数据字段列/域 |
文档:文档是有序的,大小写敏感的。键不能包含”\0”,这个字符用于标记键的结尾;”.”、”$”、”_”保留,建议不要使用在键中。文档的数据结构和JSON基本一样,所有存在集合中的数据都是BSON格式。
基本操作
- 创建/删除数据库
show dbs
查看所有数据库use DATABASE_NAME
创建数据库,若不存在则新建,否则进入此数据库db.dropDatabase()
删除当前数据库 - 集合
show collections
查看所有集合db.createCollection(name, options)
创建集合。options参数是可选的,如autoIndexId 参数,如果为true,则在_id字段上自动创建索引,默认值为false。
例子:db.createCollection("mytest", { autoIndexId : true})
db.COLLECTION_NAME.drop()
删除集合 插入文档
insert()或save()方法db.COLLECTION_NAME.insert(document)
例如:1
2
3
4db.mytest.insert({
name: 'Bob',
score: 100
})查询文档
db.COLLECTION_NAME.find()
相当于SQL中的select * from tabedb.COLLECTION_NAME.find().pretty()
以易读方式展现
条件语句和操作符:
操作 | 格式 | 示例 | 说明 |
---|---|---|---|
等于 | {<key>:<value>} |
db.mytest.find({"score":100}) |
从mytest集合中找到score等于100的文档 |
小于 | {<key>:{$lt:<value>}} |
db.mytest.find({"score":{$lt:100}}) |
从mytest集合中找到score小于100的文档 |
小于或等于 | {<key>:{$lte:<value>}} |
db.mytest.find({"score":{$lte:100}}) |
从mytest集合中找到score小于或等于100的文档 |
大于 | {<key>:{$gt:<value>}} |
db.mytest.find({"score":{$gt:100}}) |
从mytest集合中找到score大于100的文档 |
大于或等于 | {<key>:{$gte:<value>}} |
db.mytest.find({"score":{$gte:100}}) |
从mytest集合中找到score大于或等于100的文档 |
不等于 | {<key>:{$ne:<value>}} |
db.mytest.find({"score":{$ne:100}}) |
从mytest集合中找到score不等于100的文档 |
条件组合:
AND:以逗号隔开db.mytest.find({"score":{$gte:100}, "name":"Bob"})
OR:使用关键字”$or”db.mytest.find({$or:[{"score":{$gte:100}},{"name": "Tom"}]}).pretty()
更新文档
- update()方法
1
2
3
4
5
6
7
8
9db.COLLECTION_NAME.update(
<query>, update的查询条件
<update>, update的更新对象等,类似sql update查询内set后面的
{
upsert: <boolean>, 可选,不存在update的记录,是否新插入,默认是false,不插入
multi: <boolean>, 可选,默认是false,只更新找到的第一条记录
writeConcern: <document> 可选,抛出异常的级别
}
)
例子:将名字为Bob的记录更改为Jack,更新多条
db.mytest.update({'name':'Bob'},{$set:{'name':'Jack'}},{multi:true})
- save()方法:通过传入的文档来替换已有文档
1
2
3
4
5
6db.COLLECTION_NAME.save(
<document>, 文档数据
{
writeConcern: <document> 可选,抛出异常的级别
}
)
- update()方法
例子:替换 _id 为 56064f89ade2f21f36b04236 的文档数据1
2
3
4
5db.mytest.save({
"_id" : ObjectId("5a5f103d1fa359a981d5ec90"),
"name" : "Marry",
"score" : 100
})
- 删除文档
1
2
3
4
5
6
7db.COLLECTION_NAME.remove(
<query>, 可选,删除的文档的条件。若无,则删除全部文档
{
justOne: <boolean>, 可选,设为 true 或 1,则只删除一个文档
writeConcern: <document> 可选,抛出异常的级别
}
)
例子:删除名字为Tom的文档db.mytest.remove({"name":"Marry"})
练习:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25use mydb #创建数据库
show dbs #查询所有数据库
db.createCollection("mytest", { autoIndexId : true}) #创建集合mytest
show collections #查询所有集合
#插入数据
db.mytest.insert({
name: 'Bob',
score: 100
})
db.mytest.insert({
name: 'Tom',
score: 96
})
db.mytest.find({"score":100}) #查询mytest中score为100的记录
db.mytest.find({"score":{$lt:100}})
db.mytest.find({$or:[{"score":{$gte:100}},{"name": "Tom"}]}).pretty()
db.mytest.update({'name':'Bob'},{$set:{'name':'Jack'}},{multi:true})
db.mytest.find() #查询mytest中所有记录
#将_id为5a5f103d1fa359a981d5ec90的数据替换
db.mytest.save({
"_id" : ObjectId("5a5f103d1fa359a981d5ec90"),
"name" : "Marry",
"score" : 100
})
db.mytest.remove({"name":"Marry"}) #删除mytest中名字为Marry的记录