# Day19 MongoDB之旅(下)
# 数据库操作
1、增
use db1 # 如果数据库不存在,则创建数据库,否则切换到指定数据库
2、查
show dbs # 查看所有
刚创建的数据库db1并不在数据库的列表中,要显示它,我们需要向db1数据库插入一些数据
db.t1.insert({'a':1})
3、删
use db1 # 先切换到要删的库下
db.dropDatabase() # 删除当前库
# 集合操作
1、增
当第一个文档插入时,集合就会被创建
use db1
db.t1.insert({'a':1})
db.t1.insert({'a':2})
2、查看集合列表
show collections
3. 删除
db.t1.drop()
show collections
# 文档操作
- 插入
1、没有指定_id则默认ObjectId,_id不能重复,且在插入后不可变
2、插入单条
user1={
"id":1,
"name":"linda",
"age":18,
'hobbies':['music','read','dancing'],
'addr':{
'country':'China',
'city':'BJ'
}
}
db.user.insert(user)
db.user.find()
2. 插入多条
user2
user3
db.user.insertMany([user, user1, user2])
- 查询
# 比较运算
# SQL:=,!=,>,<,>=,<=
# MongoDB:{key:value}代表什么等于什么,"$ne","$gt","$lt","gte","lte",其中"$ne"能用于所有数据类型
1、select * from db1.user where name = "linda";
db.user.find({'name':'linda'})
2、select * from db1.user where name != "linda";
db.user.find({'name':{"$ne":'linda'}})
3、select * from db1.user where age > 19;
db.user.find({'age':{'$gt':19}})
4、select * from db1.user where age < 19;
db.user.find({'age':{'$lt':19}})
5、select * from db1.user where age >= 19;
db.user.find({'age':{'$gte':19}})
6、select * from db1.user where age <= 19;
db.user.find({'age':{'$lte':19}})
# 逻辑运算
# SQL:and,or,not
# MongoDB:字典中逗号分隔的多个条件是and关系,"$or"的条件放到[]内,"$not"
# 成员运算
# SQL:in,not in
# MongoDB:"$in","$nin"
# 正则匹配
# SQL: regexp 正则
# MongoDB: /正则表达/i
# 取指定字段
1、select name, age from db1.user where id=3;
db.user.find({'id':3},{'_id':0, 'name':1, 'age':1})
# 排序: 1代表升序,-1代表降序
db.user.find().sort({"name":1,})
db.user.find().sort({"age":-1,'_id':1})
# 分页:limit代表取多少个document,skip代表跳过前多少个document
db.user.find().sort({'age':1}).limit(1).skip(2)
# 获取数量
db.user.count({'age':{"$gt":30}})
--或者
db.user.find({'age':{"$gt":30}}).count()
# 其他选项
1、{'key':null} 匹配key的值为null或者没有这个key
db.t2.insert({'a':10,'b':111})
db.t2.insert({'a':20})
db.t2.insert({'b':null})
> db.t2.find({"b":null})
{ "_id" : ObjectId("5a5cc2a7c1b4645aad959e5a"), "a" : 20 }
{ "_id" : ObjectId("5a5cc2a8c1b4645aad959e5b"), "b" : null }
2、查找所有
db.user.find() # 等同于db.user.find({})
db.user.find().pretty()
3、查找一个,与find用法一致,只是只取匹配成功的第一个
db.user.findOne({"_id":{"$gt":3}})
- 修改
全量更新
部分更新
- 删除
1、删除多个中的第一个
db.user.deleteOne({'age': 8 })
2、删除国家为China的全部
db.user.deleteMany( {'addr.country': 'China'} )
3、删除全部
db.user.deleteMany({})
# 聚合操作
# MongoEngine
- 参考链接 https://www.cnblogs.com/linhaifeng/articles/8273498.html
- 参考链接 http://docs.mongoengine.org/