2018年7月6日笔记
下文中的操作都是使用python操作mongoDB,所以前提是必须安装python和mongoDB。
1. 安装pymongo
在cmd或者PowerShell中运行命令:pip install pymongo
2. 插入数据
2.1 插入一条数据
引入pymongo库中的MongoClient类,使用该类的初始化方法实例化一个对象赋值给conn
conn.myschool为数据库school,将其赋值给变量db
db.students为数据库school中的students集合,将其赋值给变量students
定义一个数据类型为字典dict的变量zhangsan
往数据库中的students集合中插入zhangsan的信息文档,students.insert_one(zhangsan)
from pymongo import MongoClient
if __name__ == '__main__':
conn = MongoClient('localhost')
db = conn.myschool
students = db.students
zhangsan = dict(
name="zhangsan",
age=20,
sex="boy",
contact=dict(
email1="abc@qq.com",
email2="123@qq.com"
)
)
students.insert_one(zhangsan)
2.2 插入多条数据
from pymongo import MongoClient
if __name__ == '__main__':
conn = MongoClient('localhost')
db = conn.myschool
students = db.students
lisi = dict(
name = 'lisi',
habit = dict(
habit1 = 'eat',
habit2 = 'sleep'
)
)
wangwu = dict(
name = 'wangwu',
age = 20,
sex = 'boy'
)
students.insert_many([lisi,wangwu])
2.3 使用循环创建3个班,并随机添加10个学生
from pymongo import MongoClient
from random import randint
if __name__ == '__main__':
conn = MongoClient('localhost')
db = conn.school
hobby_list = ['sing','drawing','run','football','basketball']
grade_list = ['grade_1_1','grade_1_2','grade_1_3']
for grade in grade_list:
collection = db.get_collection(grade)
collection.drop()
for i in range(10):
student = dict(
name = "zhangsan" + str(i),
age = randint(1,9),
sex = "男" if randint(0,1) else "女",
hobby = hobby_list[:randint(0,5)]
)
collection.insert_one(student)
3.查询数据
在进行查询的时候,必须要先执行2-3节中的代码,确保school数据库中插入3个班集合
3.1 查询集合中全部数据
示例代码如下:
from pymongo import MongoClient
if __name__ == '__main__':
conn = MongoClient('localhost')
db = conn.school
students = db.grade_1_3
cursor = students.find()
for i in cursor:
print(i)
图片.png-57.9kB
3.2 过滤查询
查询之前先定义一个数据类型为字典dict的变量filter
filter示例,查询年龄等于4的文档:filter = {"age":4}
代码示例如下,代码能够成功运行,具体的数据库名和集合名要根据自己电脑中的MongoDB情况进行更改:
from pymongo import MongoClient
if __name__ == '__main__':
conn = MongoClient('localhost')
db = conn.school
students = db.grade_1_3
filter = {"age": 4}
cursor = students.find(filter)
for i in cursor:
print(i)
filter中操作符及其含义
图片.png-131.5kB
3.2.1 $in操作符示例:
from pymongo import MongoClient
if __name__ == '__main__':
conn = MongoClient('localhost')
db = conn.school
students = db.grade_1_3
filter = {"name": {'$in':['zhangsan2','zhangsan3']}}
cursor = students.find(filter)
for i in cursor:
print(i)
<