1.介绍
将数据存为一个文档,数据结构以键值对的形式,mongoDB文档类似于json对象。
|
关系型数据库 | mongoDB |
---|---|
数据库 | 数据库 |
表 | 集合 |
行 | 文档 |
2.操作
进入:mongo
退出:exit
2.1库级操作
数据库只有插入了内容才会真正创建
`show dbs // 显示所有库//
`db //显示当前库,默认进入test//
use db_name //切换或创建数据库//
db.dropDatabase() //删除当前库//
2.2集合操作
创建集合后要插入一个文档,集合才会真正创建。命令对大小写敏感。
show collections //显示所有集合//
db.createCollection('student') //创建集合//
db.name.drop(name) //删除集合//
2.2文档操作
每个数据就是一个document,就是一条json。
2.2.1 添加单条文档:
db.collection_name.insert(document)
如果不存在就新建,例:
db.student.insert({
‘name’:‘zhangsan’,
‘age’:18,
‘sex’:man"
})
//添加文档时,如果不指定_id参数,mongdb会为文档分配一个唯一的objectId//
2.2.2 添加多条文档:
db.student.insertMany([{
‘name’:‘zhangsan’,
‘age’:18,
‘sex’:man"
},{
‘name’:‘lisi’,
‘age’:19,
‘sex’:man"
}])
2.2.3 查询
db.collection_name.find(query,projection)
查询集合中所有数据:
db.collection_name.find()
格式化输出:
db.collection_name.find().pretty()
查看满足条件的数据:
db.collection_name.find({'age':18}).pretty()
projection参数
如果不指定,默认返回所有的键值对。projection参数的设置有两种模式。
模式一:
db.student.find({'age':18},{'name':1,'age':1}).pretty()
只返回name和age所对应的键值对
db.student.find({'age':18},{'name':0,'age':0}).pretty()
指定不返回name和age所对应的键值对
要么都是1,要么都是0,不能混用。_id默认返回,需要主动指定_id:0才会隐藏。
查询全部可以用{}代替quary的值,但需要指定projection.例:
db.student.find({},{_id:0})
query条件,每个条件都用{}包裹
大于:$gt
db.student.find({age:{$gt:18}})
大于或等于:$gte
小于:$lt
小于或等于:$lte
不等于:$ne
逻辑$and $or
db.student.find({$and:[{age:{$gt:18}},{sex:'man'}]})
排序 sort({key:1/-1})
db.student.find().sort({age:1})
limit(int num)
db.student.find().limit(3)
跳过 skip(int num)
默认为0
2.2.4删除
删除集合中所有文档
db.student.remove({})
删除集合中符合条件的所有文档
db.student.remove({condition})
删除集合中符合条件的第一条文档
db.student.remove({condition},{justOne:True})
2.2.5 修改
条件修改,修改找到的第一条
db.student.update({age:18},{$set:{age:100}})
修改所有:
db.student.update({age:18},{$set:{age:100}},{multi:true})
3.pymongo
import pymongo
3.1 连接
client = pymongo.MongoClient('mongodb://localhost:27017/')
3.2 返回所有数据库
databases = client.list_database_names()
3.3 选择/创建数据库
db = client['student']
3.4 选择/创建集合
coll = db['stu']
3.4 数据crud
3.4.1查询
查所有
find()
返回<pymongo.cursor.Cursor>对象,利用循环取出其中内容
res = coll.find()
for item in res:
print(item)
查一条
res = coll.find_one()
查询条件(和命令行一致)
res = coll.find_one({'name':'zhangsan'},{'name':1,'age':1})
limit()限制条数
res = coll.find().limit(3)
for item in res:
print(item)
sort()排序
res = coll.find().sort('age',1)
for item in res:
print(item)
3.4.2 增
插一条
res = coll.insert({‘name’:‘wanger’,‘_id’:1,‘age’:17,‘sex’:‘man’})
查多条
res = coll.insert_many([
{'name':'huwu','_id':3,'sex':'female','age':20},
{'name':'zhaoliu','_id':4,'sex':'male','age':26},
{'name':'zhaoqi','_id':5,'sex':'female','age':36},
])
res.inserted_ids
插入的_id值,返回一个列表。
3.4.3 删
删一条
coll.delete_one({'name':‘wanger’})
删多条
coll.delete_many({'age':20})
3.4.4 改
改一条
coll.update_one({'name':‘wanger’},{'$set':{'name':'wangsan'})
改多条
coll.update_many({'name':‘wanger’},{'$set':{'name':'wangsan'})
修改全文档
db.updata({'name':‘wanger’},{'$set':{'name':'wangsan'})