博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用 python 操作 mongodb 常用的操作
阅读量:6487 次
发布时间:2019-06-24

本文共 3024 字,大约阅读时间需要 10 分钟。

pymongo 的安装命令 pip install pymongo.

import pymongo

数据库及集合查询(创建)

  1. 连接数据库
  2. 查询数据库中的数据库
  3. 查询数据库中的集合
  4. 创建数据库和集合只需要直接引用即可,如果不存在则自动创建。但是只有插入内容才会显示
myclient = pymongo.MongoClient("mongodb://localhost:27017")dblist = myclient.list_database_names()print(dblist)if 'runoob' in dblist:    myclient.drop_database("runoob")    print("runoob db deleted.")
mydb = myclient["runoob"]     # 不存在自动创建数据库collist = mydb.list_collection_names()print(collist)myCol = mydb["site"]      # 不存在自动创建集合

数据插入及查询

  1. isert_one()insert_many() 函数分别用来插入一条或者多条文档,对应的返回值的 inserted_idinserted_ids 返回插入文档的 _id 值。
  2. 插入时们也可以手动的指定 _id 属性。
  3. 查询使用的函数为 find_one()find()。注意使用 find() 函数返回的是一个指针(cursor),而 find_one() 返回的是字典。
  4. 查询中的表达式和 mongodb shell 中的一样,具体查询方法可以参考 mongodb 查询语法。
mydict = {"name":"RUNOOB","alexa":"10000","url":"https://www.runoob.com"}x = myCol.insert_one(mydict)print(x)print("inserted id is ",x.inserted_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("inserted ids are ",x.inserted_ids)mylist2 = [  { "_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": "知乎"}]try:    x = myCol.insert_many(mylist2)    print("inserted ids are ",x.inserted_ids)except:    pass
x = myCol.find_one()print('x type is ',type(x))print(x)docs = myCol.find()print('docs type is ',type(docs))for v in docs:    print(v)
# 查询指定字段数据,除 _id 字段以外,其他字段要么全是 1,要么全是 0for x in myCol.find({},{"_id":0,"name":1,"alexa":1}):    print(x)print('---------')# 查询 name 字段第一个字母 ASCII 值大于 H 的数据myquery = {"name":{"$gt":"H"}}myDocs = myCol.find(myquery)for v in myDocs:    print(v)print('---------')# 正则表达式查询 name 以 R 开头的文档myQuery = {"name":{"$regex":"^R"}}myDocs = myCol.find(myQuery)for v in myDocs:    print(v)print('---------')# 指定返回查询结果的数目for x in myCol.find().limit(3):    print(x)

数据的修改及删除

  1. 修改数据使用 update_one()update_many()。返回结果的 modified_count 属性给出修改文档个数, matched_count 给出插值匹配个数。
  2. 删除数据使用 delete_one()delete_many()。返回结果的 deleted_count 属性给出删除文档个数。
myQuery = {"alexa":"10000"}newValue = {"$set":{"alexa":"12345"}}x = myCol.update_one(myQuery,newValue)print(x.modified_count,x.matched_count)for v in myCol.find():    print(v)print('---------')myQuery = {"name":{"$regex":"^F"}}newValue = {"$set":{"alexa":"123"}}x = myCol.update_many(myQuery,newValue)print(x.modified_count,x.matched_count)
myQuery = {"name":"Taobao"}x = myCol.delete_one(myQuery)print(x.deleted_count)for v in myCol.find():    print(v)print('---------')myQuery = {"name":{"$regex":"^F"}}x = myCol.delete_many(myQuery)print(x.deleted_count)

转载于:https://www.cnblogs.com/yabin/p/9656889.html

你可能感兴趣的文章
Nginx负载均衡配置实例详解
查看>>
L1-009. N个数求和
查看>>
sqlserver 批量删除存储过程(转)
查看>>
自建型呼叫中心
查看>>
Inno setup中定制安装路径
查看>>
要懂得对你的老板好一点!
查看>>
visio如何让动态连接线的单箭头变成双箭头?
查看>>
poj 1273 Drainage Ditches 网络流最大流基础
查看>>
Bash: how to check if a process id (PID) exists
查看>>
Mirantis Fuel fundations
查看>>
启动Tomcat一闪而过——分析及解决过程
查看>>
Android intent action大全
查看>>
使用 Flash Builder 的 Apple iOS 开发过程
查看>>
RabbitMq_05_Topics
查看>>
redis.conf
查看>>
SCALA中的函数式编程
查看>>
将List<int> 转换为用逗号连接为字符串
查看>>
C/C++中extern关键字详解
查看>>
Eclipse 最有用的快捷键
查看>>
K & DN 的前世今生(微软开源命名变革)
查看>>