《MongoDB》的操作
20.操作数据库
20.1查看所有数据库
格式: show dbs;
20.2创建数据库
格式: use 数据库名;
注意:
如果数据库不存在则创建数据库,否则切换到指定的数据库
如果数据库刚刚创建,使用show dbs指令其实看不到新创建的数据库,这是因为数据库中没有数据而不被显示。如果想显示需要给数据库中插入一些数据。
----------------------------------------------------------------------------------
20.3查看当前数据库
查看当前使用的数据库:
格式:
db
db.getName()
----------------------------------------------------------------------------------
20.4删除数据库
删除数据库:
格式:
db.dropDatabase()
注意:
当前正在使用那个数据库则删除那个数据库,db代表当前正在使用的数据库
---------------------------------------------------
20.5断开链接
断开链接:
格式:
exit
21操作集合
21.1查看当前数据库下所有集合
格式:
show collections
21.2创建集合
方式1.
db.createCollection("集合名称")
db.createCollection("grades")
--------------------------------------------------------------------- -----------=
方式2.
db.集合名称.insert(文档)
db.students.insert({"name": "sunck", "age": 18, "hobbys": ["money", "power"]}
----------------------------------------------------------------------------------
区别:
方法1创建一个空集合,方法2创建一个空集合后并向集合添加一个文档
21.3删除集合
格式:db.集合名称.drop()
22操作文档
22.1增
1.insert()
格式: db.集合名称.insert(文档)
示例:
添加一个 db.students.insert({"name": "sunck", "age": 18})
添加多个 db.students.insert([{"name": "tom1", "age": 10},{"name": "tom2", "age": 19}])
----------------------------------------------------------------------------------
2.save()
格式: db.集合名称.save(文档)
示例:
db.students.save({"name": "tom3", "age": 20})
db.students.save([{"name": "tom4", "age": 14},{"name": "tom5", "age": 17}])
----------------------------------------------------------------------------------
注意:
如果不指定_id字段save()方法类似于insert()方法,如果指定_id字段,则会更新该_id字段的数据内容
db.students.save({"_id": ObjectId("5c777b0738302fe0c93365c4"),"name": "tom3", "age": 22})
22.2删
remove()
格式:
db.集合名称.remove(
{query}
{
justOne: <boolean>,
writeConcern: <document>
}
)
----------------------------------------------------------------------------------
说明:
query 可选参数,删除的条件
justOne 可选参数,如果为true,则只删除一个文档
writeConery 可选参数,抛出异常的级别
----------------------------------------------------------------------------------
示例:
db.students.remove({name:"sunck"})
db.students.remove({age:19},{justOne:true})
22.3改
update()
格式:
db.集合名称.update(
<query>,
<update>,
{
upset: <boolean>,
multi:<boolean>,
writeConcern: <document>
}
)
----------------------------------------------------------------------------------
参数说明:
query 修改的查询条件,类似mysql中的update后面的where后面的条件语句
update 一些更新的操作($set 表示设置 $inc 表示叠加)
upsert 可选参数,如果不存在update的记录,是否插入该数据??true为插入,默认为False不插入
multi 可选参数,默认为False,只更新找到的第一条数据,如果为True则更新全部匹配的数据
writeConcern
----------------------------------------------------------------------------------
示例:
db.students.update({name:"tom1"},{$set:{age:20}})
db.students.update({age:27},{$set:{name:"tom50"}},{multi:true})
db.students.update({name:"tom1"},{$inc:{age:2}})
db.students.update({_id:ObjectId("5c778017fd42e8c9efdd1311")},{$set:{name:"tom20"}},{upsert:true})
----------------------------------------------------------------------------------
save()
作用:
通过传入的文档替换已有文档
格式:
db.集合名称.save(
<document>
)
22.4查
22.4.1查询文档
1.查询文档
find()
方法一:
db.集合名称.find()
查询集合中的所有文档
方法二:
db.集合名称.find(
{
query
},
{
key1: 1,
key2: 1,
……
keyn:1
}
)
参数说明:
query 查询条件
key 要显示的字段,1表示显示
示例:
db.students.find({age:27})
db.students.find({age:27},{name:1})
---------------------------------------------------
pretty()
作用: 以格式化的方式来显示查询到的文档
示例: db.students.find({age:27}).pretty()
---------------------------------------------------
findOne()
作用: 匹配结果中的第一条数据
示例:
db.students.findOne({age:27})
db.students.findOne()
22.4.2查询条件操作符
数学运算符:
符号:
> $gt
< $lt
>= $gte
<= $lte
格式:
db.集合名称.find({key:{操作符:值}})
示例:
db.students.find({age:{$gt:30}})
---------------------------------------------------
联合使用>=与<=
示例:db.students.find({age:{$gte:20, $lte:30}}
---------------------------------------------------
等号
符号: ==
格式:db.集合名称.find({key:值})
---------------------------------------------------
使用_id进行查询
db.集合名称.find({_id:ObjectId("值")})
---------------------------------------------------
查询某个字段中是否包含另一个值
格式: db.集合名称.find({key:/value/})
示例: db.students.find({name:/6/})
---------------------------------------------------
查询某个字段是否以另一个值开头
格式:db.集合名称.find({key:/^value/})
示例:db.students.find({name:/^tom1/})
22.4.3聚合:
count()
查询某个结果集的数据条数
db.students.find({name:/^tom1/}).count()
22.4.4查询条件and和or
and
find()中输入多个键,每个键以逗号分隔
db.students.find({age:27, name:"tom50"})
---------------------------------------------------
or
db.集合名称.find(
{
$or: [
{key1: value1},
{key2: value2},
……
{keyn: valuen}
]
}
)
示例:
db.students.find({$or:[{age:{$lt:20}},{age:{$gt:40}}]})
---------------------------------------------------
and和or联合使用
db.集合名称.find(
{
key1: value1,
key2: value2,
$or:[
{key1: value1},
{key2: value2}
]
}
)
22.4.5limit和skip
limit()
作用: 读取指定条数的记录
示例: db.students.find().limit(2)
---------------------------------------------------
skip()
作用: 跳过指定数量的数据
示例: db.students.find().skip(2)
---------------------------------------------------
分页
db.students.find(3).skip(2)
22.4.6排序
格式:db.集合名称.find().sort({key:值})
说明:
key:排序的字段
值:1 升序 -1降序
示例:
db.students.find().sort({age:1})
db.students.find().sort({age:1, name:-1})
23 Pymongo模块
作用:代码操作 Mongo DB数据库
安装:sudo pip install pymongo
示例:
from pymongo import MongoClient
conn = MongoClient("www.sunck.wang", 27017)
db = conn.py1901
students = db.students
students.insert({"name": "tom100", "age": 18})
students.insert([{"name": "tom101", "age": 18},{"name": "tom102", "age": 18}])
conn.close()