python使用pymongo操作蒙戈的完整步骤

  

  

MongoDB是由c++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档,数组及文档数组,非常灵活。在这一节中,我们就来看看Python 3下MongoDB的存储操作。

  


  

  

在开始之前,请确保已经安装好了MongoDB并启动了其服务,并且安装好了Python的PyMongo库。

  


  

  

连接MongoDB时,我们需要使用PyMongo库里面的MongoClient。一般来说,传入MongoDB的IP及端口即可,其中第一个参数为地址主机,第二个参数为端口港口(如果不给它传递参数,默认是27017):

        进口pymongo   客户=pymongo。MongoClient(主机=發ocalhost”,端口=27017)      

这样就可以创建MongoDB的连接对象了。

  

另外,MongoClient的第一个参数主机还可以直接传入MongoDB的连接字符串,它以MongoDB开头,例如:

        客户=MongoClient (“mongodb://localhost: 27017/?      

这也可以达到同样的连接效果。

  


  

  

MongoDB中可以建立多个数据库,接下来我们需要指定操作哪个数据库。这里我们以测试数据库为例来说明,下一步需要在程序中指定要使用的数据库:

        db=client.test      

这里调用客户的测试属性即可返回测试数据库。当然,我们也可以这样指定:

        db=客户['测试']      

这两种方式是等价的。

  


  

  

MongoDB的每个数据库又包含许多集合(集合),它们类似于关系型数据库中的表。

  

下一步需要指定要操作的集合,这里指定一个集合名称为学生。与指定数据库类似,指定集合也有两种方式:

        收集=db.students            收集=db(“学生”)      

这样我们便声明了一个集合对象。

  


  

  

接下来,便可以插入数据了。对学生于这个集合,新建一条学生数据,这条数据以字典形式表示:

        学生={   “id”:“20170101”,   “名称”:“乔丹”,   “年龄”:20,   “性别”:“男性”   }      

这里指定了学生的学号,姓名,年龄和性别。接下来,直接调用收集的insert()方法即可插入数据,代码如下:

        结果=collection.insert(学生)   打印(结果)      

在MongoDB中,每条数据其实都有一个_id属性来唯一标识。如果没有显式指明该属性,MongoDB会自动产生一个ObjectId类型的_id属性.insert()方法会在执行后返回_id值。

  

运行结果如下:

  
  

5932 a68615c2606814c91f3d
  

     

当然,我们也可以同时插入多条数据,只需要以列表形式传递即可,示例如下:

        学生1={   “id”:“20170101”,   “名称”:“乔丹”,   “年龄”:20,   “性别”:“男性”   }      学生二={   “id”:“20170202”,   “名称”:“迈克”,   年龄:21岁   “性别”:“男性”   }      结果=集合。插入([学生1,学生二])   打印(结果)      

返回结果是对应的_id的集合:

  
  

[ObjectId (5932 a80115c2606a59e8a048), ObjectId (5932 a80115c2606a59e8a049)]
  

     

实际上,在PyMongo 3. x版本中,官方已经不推荐使用插入()方法了。当然,继续使用也没有什么问题。官方推荐使用insert_one()和insert_many()方法来分别插入单条记录和多条记录,示例如下:

        学生={   “id”:“20170101”,   “名称”:“乔丹”,   “年龄”:20,   “性别”:“男性”   }      结果=collection.insert_one(学生)   打印(结果)   打印(result.inserted_id)      

运行结果如下:

  
  

& lt; pymongo.results。在0 x10d68b558> InsertOneResult对象;
  5932年ab0f15c2606f0c1cf6c5
  

     

与插入()方法不同,这次返回的是InsertOneResult对象,我们可以调用其inserted_id属性获取_id。

  

对于insert_many()方法,我们可以将数据以列表形式传递,示例如下:

python使用pymongo操作蒙戈的完整步骤