mongoDB

大约 2 分钟

mongoDB

安装连接数据库的模块

pip install pymongo

连接数据库

# 导入模块
import pymongo

# 通过端口连接数据库,这个端口里面可以有很多个库
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
# 创建或连接指定的数据库
mydb = myclient["shangjiaosuo"]
# 连接这个库里面指定的集合,集合就是存储数据的
sjs = mydb["sjs_test"]

插入数据

插入一条数据

# 如果没指定_id,则数据库会自动生成id
data = {
  "name": "zhangsan",
  "age": 18,
  "sex": "male"
}

# 插入一个数据, sjs 为一个集合,它会返回这条数据的 _id
x = sjs.insert_one(data)

插入多条数据

mylist = [
  { "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" },
  { "name": "QQ", "alexa": "101", "url": "https://www.qq.com" },
  { "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" },
  { "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" },
  { "name": "Github", "alexa": "109", "url": "https://www.github.com" }
]

# 返回所有数据对应的 _id
x = sjs.insert_many(mylist)

查询数据

查询一条数据

# 返回集合中的第一条数据
x = sjs.find_one()

查询集合中所有数据

# 返回集合中的所有数据
list = sjs.find()

for li in list:
  print(li)

查询指定字段的数据

# 将要返回的字段设置为1,如这里要返回 name 和 alexa 字段
list = sjs.find({}, { "_id": 0, "name": 1, "alexa": 1})

根据指定条件查询

my_query = { "name": "zhangsan"}
# 返回所有 name = zhangsan 的数据
list = sjs.find(my_query)

查询条件可以是修饰符

my_query = { "name": { "$gt": "H"} }
# 这表示读取所有的 name 的首字母的 ASCII 值大于 H 的数据。$gt 表示大于符
sjs.find(my_query)

查询符号可以是正则

my_query = { "name": { "$regex": "^R" } }
# 这表示查询所有的 name 的首字符为 R 的数据。$regex 表示使用正则
sjs.find(my_query)

返回指定条数数据

# 表示查询集合中的3条记录,顺序返回。limit 只接受一个数字参数
sjs.find().limit(3)

修改数据

修改一条数据

# 指定修改对应数据的条件
my_query = { "name": "zhangsan" }
# 指定要修改的数据
new_value = { "$set": { "sex": "male" } }

x = sjs.update_one(my_query, new_value)

修改所有匹配到的数据

# 指定修改对应数据的条件
my_query = { "name": "zhangsan" }
# 指定要修改的数据
new_value = { "$set": { "sex": "male" } }

x = sjs.update_many(my_query, new_value)

删除数据

删除一条数据

# 指定删除对应数据的条件
my_query = { "name": "zhangsan" }

x = sjs.delete_one(my_query)

删除多条数据

# 指定删除对应数据的条件
my_query = { "name": "zhangsan" }
# 如果将查询条件置为空,则表示删除这个集合中的所有数据
# my_query = {}
x = sjs.delete_many(my_query)

删除集合

# sjs 为一个集合,删除成功返回 True,失败返回 False
sjs.drop()

排序

sotr()方法可以指定数据升序或降序,它接收两个参数:

  1. 第一个参数表示排序依据的字段
  2. 第二个参数表示升序还是降序,默认升序
# 表示将查询到的数据根据 id 排序,升序
x = sjs.find().sort("id")

# 这个表示降序
# x = sjs.find().sort("id", -1)
上次编辑于: