目录

2-4 Python 访问MongoDB

第一关:python连接MongoDB写入数据

第二关:检索文档

第三关:更新数据

2-4 Python 访问MongoDB

第一关:python连接MongoDB写入数据

1、导入pymongo库

import pymongo

2、使用MongoClient对象创建与数据库服务器的连接:

(1)与数据库访问器连接

client= pymongo.MongoClient(host='127.0.0.1',port=12717)

(2)连接到具体的mongodb服务器或副本集:

client=pymongo.MongoClient(host='10.90.9.102',port=12718)
client=pymongo.MongoClient(host=’10.90.9.101:27018,10.90.9.102: 12718,10.90.9.103:27018')

创建数据库 runoobdb :

1、mydb = client["runoobdb"]    mydb(相当于别名吧)=client[“数据库名称”]
2、db=client.mydb   db=client.databaseName  有则访问,无则创建!!!

创建集合:collection:

mycol=mydb["collection"]

3、访问数据库

创建MongoClient实例后,就可以访问服务器中的任何数据。

如果要访问一个数据库,可以将其当作属性一样进行访问:

db = client.myDB

也可以使用函数方式访问,如果不存在数据库,则系统会自动创建数据库

db = client.get_database("myDB")

注意:

在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。

4、集合操作

(1)插入文档

在数据库中存储数据时,首先指定使用的集合,然后使用集合的insert_one()方法插入文档

mydict = { "name": "RUNOOB", "alexa": "10000", "url": "https://www.runoob.com" }
x = mycol.insert_one(mydict)

(2)可以使用方法insert_many()同时插入多个文档。

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)

5、输出所有插入文档的_id值

print(x.inserted_ids)

python服务连接服务器 python连接服务器上的mongo_mongodb

 

第二关:检索文档

使用 find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。

示例:

import pymongo
myclient= pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["runoobdb"]
mycol = mydb["sites"]         //创建数据库与集合

示例1、//查询mycol的sites集合中的所有数据并且输出:

for x in mycol.find():           
  print(x)

用python测试

python服务连接服务器 python连接服务器上的mongo_nosql_02

 

示例2、//_id为0不输出,输出name和alexa部分的字段 :

for x in mycol.find({},{ "_id": 0, "name": 1, "alexa": 1 }):    
  print(x)

    

python服务连接服务器 python连接服务器上的mongo_redis_03

 示例3、//会报错

for x in mycol.find({},{ "name": 1, "alexa": 0 }):
  print(x)

python服务连接服务器 python连接服务器上的mongo_redis_04

 

示例4、查询姓名为RUNOOB的,将查询存储到myquery里面,将结果存储到mydoc里面

myquery = { "name": "RUNOOB" }
mydoc = mycol.find(myquery)
for x in mydoc:
  print(x)

python服务连接服务器 python连接服务器上的mongo_python服务连接服务器_05

 

编程测试:

python服务连接服务器 python连接服务器上的mongo_hbase_06

 

第三关:更新数据

1、更新数据

my_set.update( #查询条件,#update的对象和一些更新的操作符)

update_one() 方法只能修匹配到的第一条记录

update_many() 修改所有匹配到的记录

示例:修改名字以F开头的alexa为“123“:

myquery = { "name": { "$regex": "^F" } }
newvalues = { "$set": { "alexa": "123" } }
x = mycol.update_many(myquery, newvalues)
print(x.modified_count, "文档已修改")

python服务连接服务器 python连接服务器上的mongo_mongodb_07

2、删除数据

delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

delete_many() 方法来删除多个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

示例:删除名字以F开头的信息

myquery = { "name": {"$regex": "^F"} }
x = mycol.delete_many(myquery)
print(x.deleted_count, "个文档已删除")

python服务连接服务器 python连接服务器上的mongo_mongodb_08

编程测试:

python服务连接服务器 python连接服务器上的mongo_redis_09