# 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"

# 成员运算
# SQLin,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/
上次更新: 10/31/2022, 5:19:53 PM