mangodb

import pymongo
 
# 创建数据库需要使用 MongoClient 对象,并且指定连接的 URL 地址和要创建的数据库名
# 连接数据库
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
# 获取所有数据库
dblist = myclient.list_database_names()
#注意:database_names 在最新版本的 Python 中已废弃,Python3.7+ 之后的版本改为了 list_database_names()。
# 获取数据库
mydb = myclient["runoobdb"]
# 获取所有集合
collist = mydb.list_collection_names()
# collist = mydb.collection_names()    3.7版本之前
# 获取集合(表)
mycol = mydb["sites"]
# 注意: 在 MongoDB 中,集合只有在内容插入后才会创建! 就是说,创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。
# 插入单个文档(一条数据)
mydict = { "name": "RUNOOB", "alexa": "10000", "url": "https://www.runoob.com" }
x = mycol.insert_one(mydict) 
print(x.inserted_id)  # 结果5b2369cac315325f3698a1cf
# insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值。
# 插入多个文档
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" }
]
x = mycol.insert_many(mylist)
print(x.inserted_ids) # 结果[ObjectId('5b236aa9c315325f5236bbb6'), ObjectId('5b236aa9c315325f5236bbb7'), ObjectId('5b236aa9c315325f5236bbb8'), ObjectId('5b236aa9c315325f5236bbb9'), ObjectId('5b236aa9c315325f5236bbba')]
# 插入指定 _id 的多个文档
mylist = [
  { "_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"},
  { "_id": 2, "name": "Google", "address": "Google 搜索"},
  { "_id": 3, "name": "Facebook", "address": "脸书"},
  { "_id": 4, "name": "Taobao", "address": "淘宝"},
  { "_id": 5, "name": "Zhihu", "address": "知乎"}
]
x = mycol.insert_many(mylist)

# 删除一个文档
myquery = { "name": "Taobao" }
mycol.delete_one(myquery)
# 删除多个文档
# 删除所有 name 字段中以F开头的文档
myquery = { "name": {"$regex": "^F"} }
x = mycol.delete_many(myquery)
# 删除集合中的所有文档
mycol.delete_many({})
# 删除集合
mycol.drop()

# 修改一个, 如果查找到的匹配数据多于一条,则只会修改第一条
myquery = { "alexa": "10000" }
newvalues = { "$set": { "alexa": "12345" } }
mycol.update_one(myquery, newvalues)
# 修改多个
# 查找所有以 F 开头的 name 字段,并将匹配到所有记录的 alexa 字段修改为 123
myquery = { "name": { "$regex": "^F" } }
newvalues = { "$set": { "alexa": "123" } }
x = mycol.update_many(myquery, newvalues)

# 查询一条数据(第一条)
x = mycol.find_one()
# 查询集合中所有数据
for x in mycol.find():
  print(x)
# 查询指定字段的数据
# 使用 find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1
for x in mycol.find({},{ "_id": 0, "name": 1, "alexa": 1 }):
  print(x)
# 除了 _id,你不能在一个对象中同时指定 0 和 1,如果你设置了一个字段为 0,则其他都为 0,反之亦然。
for x in mycol.find({},{ "alexa": 0 }):
  print(x)
# 根据指定条件查询
myquery = { "name": "RUNOOB" } 
mydoc = mycol.find(myquery)
# 高级查询
# 读取 name 字段中第一个字母 ASCII 值大于 "H" 的数据,大于的修饰符条件为 {"$gt": "H"}
myquery = { "name": { "$gt": "H" } }
mydoc = mycol.find(myquery)
# 使用正则表达式查询
# 读取 name 字段中第一个字母为 "R" 的数据,正则表达式修饰符条件为 {"$regex": "^R"}
myquery = { "name": { "$regex": "^R" } }
mydoc = mycol.find(myquery)
# 返回指定条数记录
myresult = mycol.find().limit(3)

# 排序
# sort() 方法第一个参数为要排序的字段,第二个字段指定排序规则,1 为升序,-1 为降序,默认为升序
mydoc = mycol.find().sort("alexa")
mydoc = mycol.find().sort("alexa", -1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值