MongoDB基本概念
MongoDB概念 | 说明 |
---|---|
database | 数据库 |
collection | 集合 |
document | 文档 |
field | 域 |
index | 索引 |
primary key | 主键, MongoDB自动将_id字段设置为主键 |
- 文档
文档是MongoDB中数据的基本单元,文档有唯一标识”_id”。文档以key/value的方式存储,如{“name”: “Shawn”, “age”: 20}。
- 集合
集合在MongoDB中是一组文档。
- 数据库
一个MongoDB可以创建多个数据库,默认数据库为“db”, 该数据库存储在data目录。MongoDB的单个实例可以容纳在多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也可以放在不同的文件夹中。
MongoDB的基本操作
- 创建/删除数据库
创建数据库: use DATABASE_NAME
如果存在该数据库,则切换到该数据库,如果不存在,则创建该数据库并切换至该数据库
删除数据库:db.dropDatabase()
此语句可以删除当前数据库,你可以用db命令来查看当前数据库名
- 集合中文档的增删改查
插入文档:MongoDB使用insert()或save()方法向集合中插入文档
db.COLLECTION_NAME.insert(document)
查询文档: db.COLLECTION_NAME.find()
以易读的方式来读取数据: db.COLLECTION_NAME.find().pretty()
MongoDB的find()方法可以传入多个键(key),每个键以逗号隔开,实现AND功能:
db.COLLECTION_NAME.find({key1: value1, key2: value2}).pretty()
查找python集合中likes大于100且title等于python的文档:
db.python.find({“likes”: {$gte: 100}, “title”: “python”}).pretty()
MongoDB OR条件语句使用了关键字”$or”, 查找python集合中likes大于等于100或者titile等于python的文档:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
db.python.find(
{
$or: [
{"likes": {$get: 100}}, {"title": "python"}
]
}
)
更新文档: MongoDB使用updata()和save()方法来更新集合中的文档:
- 通过update()方法更新集合中的文档
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
db.collection.update(
query,
update,
{
upsert: boolean,
multi: boolean,
writeConcern: document
}
参数分析:
query: update的查询条件
update: update的对象和一些更新的操作符等
upsert: 可选, 这个参数的意思是如果不存在update的记录, 是否插入新的文档, true为插入, 默认是false
multi: 可选, mongodb默认是false, 只更新找到的第一条记录, 如果这个参数为false, 就把符合条件的记录全部更新
writeConcern: 可选, 抛出异常的级别
- 通过save()方法通过传入的文档来替换已有的文档。
1
2
3
4
5
6
7
8
9
10
11
12
13
db.python.save(
document,
{
writeConcern: document
}
)
ducument: 文档数据 writeConcern: 可选,抛出异常级别
删除文档: MongoDB提供了remove()方法来删除文档
1 2 3 4 5 6 7 db.collection.remove( query, { justOne: boolean, writeConcern: document } )参数说明: query: 可选, 删除的文档的条件 justOne: 可选, 如果设为true或1, 则只删除一个文档 writeConcern: 可选, 抛出异常的级别
Python操作MongoDB
- 导入pymongo数据库模块
1
import pymongo
- 建立连接
1 2 3 4 5 6
#第一种形式 client = pymongo.MongoClient() #第二种形式 client = pymongo.MongoClient('localhost', 27017) #第三种形式 client = pymongo.MongoClient('mongodb://localhost:27017/')
- 获取数据库
1 2 3 4
#第一种方式 db = client.papers #第二种方式 db = client['papers']
- 获取一个集合
1 2 3 4
#第一种方式 collection = db.books、 #第二种方式 collection = db['books']
- 插入文档
1
book_id = collection.insert(books)
- 查询文档
1 2 3 4
#返回第一个 collection.find_one() #返回全部 colleciton.find()
- 修改文档
1
collection.update()
- 删除文档
1
collection.remove()
其实对于一个文档的操作无非就是在collection上插查改删,操作就是: db[‘collection’].insert(), db[‘collection’].find(), db[‘collection’].update(), db[‘collection’].remove()