python操作mongodb增删改查,python操作mongodb的出现的问题

  python操作mongodb增删改查,python操作mongodb的出现的问题

  用python下载MongoDB的驱动

  安装Pymongo,然后确定MongoDB已经安装并且可以正常运行,去官网下载相应版本:https://www.mongodb.com/

  mkdir -p /home/tools

  光盘/主页/工具

  WGEThttps://fastdl.mongodb.org/linux/mongodb-linux-x86 _ 64-3 . 4 . 2 . tgz解压文件,修改目录名。

  tar-zxvf MongoDB-Linux-x86 _ 64-3 . 4 . 2 . tgz

  mv MongoDB-Linux-x86 _ 64-3 . 4 . 2 MongoDB 3 . 4 . 2

  ln-s MongoDB _ 3 . 4 . 2 MongoDB MongoDB的可执行文件位于bin目录下,所以可以添加到PATH path中。

  导出路径=/home/tools/MongoDB/bin:$ pathmongodb的数据存储在数据目录的db目录下,但是在安装过程中不会自动创建这个目录,所以需要手动创建数据目录,并在数据目录下创建db目录。

  Mkdir -p /data/db在Mongo安装目录的bin目录下执行mongod命令,启动mongdb服务。/MongoD-dbpath/data/db如果要进入MongoDB后台管理。/mongo

  # ./mongo

  MongoDB shell版本3.4.2

  连接到:mongodb://127.0.0.1:27017

  MongoDB服务器版本:3.4.2

  欢迎来到MongoDB shell。

  ...

  乘以文件数。

  2017-03-12T01:15:04.901 0800我控制[initandlisten]

  使用用户admin连接到本地MongoDB服务,密码为123456。

  MongoDB://admin:123456 @ localhost/

  .创建数据库(如果数据库不存在,则创建数据库,否则切换到指定的数据库)

  .使用测试

  2017-03-12T01:34:04.361 0800 E查询[thread1] SyntaxError:缺失;语句@之前(shell):3:4

  使用测试

  切换到db测试

  试验

  显示数据库#查看所有数据库

  管理0.000GB

  本地0.000GB

  Python操作mongodb

  连接mongodb

  #!/usr/bin/env python

  # -*-编码:utf-8 -*-

  从pymongo导入MongoClient

  conn=mongo client( 192 . 168 . 0 . 113 ,27017)

  Db=conn.mydb #连接到mydb数据库,否则会自动创建。

  My_set=db.test_set #使用test_set集合,否则会自动创建。

  插入数据(Insert插入多个数据的列表,不需要遍历,效率高。保存需要遍历列表并逐个插入)

  my_set.insert({ 姓名:张三,年龄:18})

  #或者

  My _ set.save ({name :张三, age: 18})插入多个片段

  #向集合中添加多条数据

  users=[{name :张三,年龄:18},{name:lisi ,年龄:20}]

  my_set.insert(用户)

  #或者

  my_set.save(用户)

  查询数据(如果没有找到,则返回None)

  #全部查询

  for i in my_set.find():

  打印(一)

  #查询姓名=张三的

  对于my_set.find({name :张三 })中的I:

  打印(一)

  print(my_set.find_one({name :张三 }))

  更新数据

  my_set.update(

  查询,#查询条件

  更新,#update对象和一些更新的操作符。

  {

  Upsert: boolean,#如果没有更新的记录,是否插入?

  Multi: boolean,#可选,mongodb默认为false,只更新找到的第一条记录。

  WriteConcern: document #可选,抛出异常的级别。

  }

  )

  将上面插入的数据中的年龄更改为20。

  My _ set.update ({name :张三 },{$ set: {age: 20}})删除数据

  my_set.remove(

  查询,#(可选)已删除文档的条件

  {

  JustOne: boolean,#(可选)如果设置为true或1,将只删除一个文档。

  WriteConcern: document #(可选)引发异常的级别。

  }

  )

  #删除name=lisi的所有记录

  my_set.remove({name :张三 })

  #删除名称为lisi的id的记录

  id=my_set.find_one({name :张三 })[_id]

  my_set.remove(id)

  #删除集合中的所有记录

  db.users.remove()

  mongodb的条件运算符

  #()大于-$gt

  #()小于-$lt

  # (=)大于或等于-$gte

  # (=)小于或等于-$lte#示例:查询集合中年龄大于25的所有记录

  对于my_set.find({age:{$gt:25}})中的I:

  打印(一)

  类型(判断类型)

  #找出名称的类型是字符串

  对于my _ set . find({ name :{ $ type :2 } })中的I:

  打印(I)类型团队比较列表

  查看代码

  分类

  在MongoDB中,使用sort()方法对数据进行排序。sort()方法可以通过参数指定排序后的字段,用1和-1指定排序方式,其中1为升序,-1为降序。

  for i in my_set.find()。排序([(age ,1)]):

  打印(I)限制和跳过

  #limit()方法用于读取指定数量的数据。

  #skip()方法用于跳过指定数量的数据。

  #下面表示跳过两条数据后读取6条

  for i in my_set.find().跳过(2)。限制(6):

  在中打印

  #找出年龄是20、30、35的数据

  对于我在我的集合里。find({ age :{ $ in :(20,30,35)}):

  打印或

  #找出年龄是20或35的记录

  对于my_set.find中的我({ $ or :[{ age :20 },{age:35}]}):

  全部打印

  dic={name:lisi , age:18, li:[1,2,3]}

  dic2={name :张三,年龄:18,李:[1,2,3,4,5,6]}

  my_set.insert

  my_set.insert(dic2)

  对于my_set.find中的I({ Li :{ $ all :[1,2,3,4]}):

  打印(一)

  #查看是否包含全部条件

  #输出:{ _ id :ObjectId( 58c 503 b 94 fc9d 44624 f7b 108 ), name :张三“年龄”:18岁李:[1,2,3,4,5,6]}

  推/全推

  my_set.update({name:lisi},{$push:{li:4}})

  对于my_set.find({name:lisi})中的我:

  打印(一)

  #输出:{li: [1,2,3,4], _ id :ObjectId( 58 c50d 784 fc 9d 44 ad 8 F2 e 803 ), age: 18, name: lisi}

  my_set.update({name:lisi},{$pushAll:{li:[4,5]})

  对于my_set.find({name:lisi})中的我:

  打印(一)

  #输出:{li: [1,2,3,4,4,5], name: lisi , age: 18, _ id :ObjectId( 58 c50 d 784 fc 9d 44 ad 8f 2e 803 )}

  弹出/拉出/拉出所有

  #流行

  #移除最后一个元素(-1为移除第一个)

  my_set.update({name:lisi},{$pop:{li:1}})

  对于my_set.find({name:lisi})中的我:

  打印(一)

  #输出:{ _ id :ObjectId( 58 c50 d 784 fc 9d 44 ad 8 F2 e 803 ), age: 18, name: lisi , li: [1,2,3,4,4]}

  #拉动(按值移除)

  #移除3

  my_set.update({name:lisi},{$pop:{li:3}})

  #pullAll(移除全部符合条件的)

  my_set.update({name:lisi},{ $ pull :{ Li :[1,2,3]})

  对于my_set.find({name:lisi})中的我:

  打印(一)

  #输出:{name: lisi , _ id :ObjectId( 58 c50 d 784 fc 9d 44 ad 8 F2 e 803 ), li: [4,4], age: 18}

  多级路径元素操作

  先插入一条数据

  dic={name :张三,

  年龄:18岁,

  联系人:{

  邮箱:“1234567@qq.com”,

  iphone : 11223344}

  }

  my_set.insert

  #多级目录用。连接

  对于我的集合。查找({ 联系人。iphone : 11223344 })中的我:

  打印(一)

  #输出:{ 姓名: 张三, _ id :ObjectId( 58 C4 f99 C4 fc 9d 42 e 0022 C3 B6 ),年龄:18,联系人:{ 邮箱: 1234567@qq.com , iphone: 11223344}}

  result=my _ set。find _ one({ 联系人。iphone : 11223344 })

  打印(结果[联系人][电子邮件])

  #输出:1234567@qq.com

  #多级路径下修改操作

  result=my _ set。更新({ 联系人。iphone : 11223344 },{ $ set :{ 联系人。邮箱: 9999999 @ QQ。com })

  结果1=我的集合。find _ one({ 联系人。iphone : 11223344 })

  打印(结果1[联系人][电子邮件])

  #输出:9999999@qq.com

  还可以对数组用索引操作

  dic={name:lisi ,

  年龄:18岁,

  联系人:[

  {

  邮箱:“111111@qq.com”,

  iphone : 111},

  {

  邮箱:“222222@qq.com”,

  iphone : 222}

  ]}

  my_set.insert

  #查询

  结果1=我的集合。find _ one({ 联系人。1 .iphone : 222 })

  打印(结果1)

  #输出:{ 年龄:18, _ id :ObjectId( 58 C4 ff 574 fc9d 43844423 db 2),姓名: lisi ,联系人:[{iphone: 111 , email: 111111@qq.com},{iphone: 222 , email : 222222222 @ QQ。com }]}

  #修改

  result=my _ set。更新({ 联系人。1 .iphone : 222 },{ $ set :{ 联系人。1 .邮箱: 222222 @ QQ。com }))

  打印(结果1[联系人][1][电子邮件])

  #输出:222222@qq.com

  1 #!/usr/bin/env python

  2 # -*-编码:utf-8 -*-

  3从安装导入MongoClient

  四

  5设置={

  6 ip:192.168.0.113 ,#ip

  7 端口:27017,#端口

  8 数据库名称:我的数据库,#数据库名字

  9"设置名称":"测试设置"#集合名字

  10 }

  11

  12类MyMongoDB(对象):

  13 def __init__(self):

  14尝试:

  15 self.conn=MongoClient(设置[ip],设置[端口])

  16除了e:

  17印(英)

  18自我。db=自我。连接[设置[数据库名称]]

  19自我。my _ set=self。数据库[设置[集合名称]]

  20

  21个极好的插件(self、dic):

  22打印(‘inser .’)

  23 self.my_set.insert(dic)

  24

  25 def更新(self、dic、newdic):

  26打印(更新.)

  27 self.my_set.update(dic,newdic)

  28

  29 def删除(self,dic):

  30打印(删除.)

  31 self.my_set.remove(dic)

  32

  33 def dbfind(self,dic):

  34打印(查找.)

  35 data=self.my_set.find(dic)

  36对于结果数据:

  37打印(结果[姓名],结果[年龄])

  38

  39 def main():

  40 dic={name :张三,年龄:18}

  41 mongo=MyMongoDB()

  42 mongo.insert(dic)

  43 mongo.dbfind({name :张三 })

  44

  45 mongo.update({name :张三},{$set:{age:25}})

  46 mongo.dbfind({name :张三 })

  47

  48 mongo.delete({name :张三 })

  49 mongo.dbfind({name :张三 })

  50

  51如果__name__==__main__ :

  52 main()

  下载大蟒中MongoDB的驱动程序

  点安装安装然后确保MongoDB已经安装且可以正常运行,去官网下载相应版本:https://www.mongodb.com/

  mkdir -p /home/tools

  光盘/主页/工具

  wget https://fastdl。MongoDB。org/Linux/MongoDB-Linux-x86 _ 64-3。4 .2 .图斯特拉古铁雷斯解压文件并修改目录名

  tar-zxvf MongoDB-Linux-x86 _ 64-3。4 .2 .图斯特拉古铁雷斯

  mv MongoDB-Linux-x86 _ 64-3。4 .2 MongoDB 3。4 .2

  软链接蒙古数据库_3.4.2蒙古数据库蒙古数据库的可执行文件位于容器目录下,所以可以将其添加到小路路径中

  导出路径=/home/tools/MongoDB/bin:$ PATHMongoDB的数据存储在数据目录的目录下,但是这个目录在安装过程不会自动创建,所以你需要手动创建数据目录,并在数据目录中创建目录。

  mkdir -p /data/db在蒙戈安装目录中的容器目录执行数据库服务程序命令来启动mongdb服务。/mongod - dbpath /data/db如果想进入MongoDB后台管理。/mongo

  # ./mongo

  MongoDB shell版本3.4.2

  连接到:mongodb://127.0.0.1:27017

  MongoDB服务器版本:3.4.2

  欢迎来到MongoDB shell .

  ...

  乘以文件数。

  2017-03-12T01:15:04.901我控制[initandlisten]

  使用用户管理使用密码123456 连接到本地的MongoDB服务上

  MongoDB://admin:123456 @ localhost/

  .创建数据库(如果数据库不存在,则创建数据库,否则切换到指定数据库)

  .使用测试

  2017-03-12T01:34:04.361 0800查询[thread1]语法错误:缺失;语句@之前(外壳):3:4

  使用测试

  切换到测试

  试验

  显示数据库编号查看所有数据库

  管理0.000GB

  本地0.000GB

  大蟒操作数据库

  连接数据库

  #!/usr/bin/env python

  # -*-编码:utf-8 -*-

  从安装导入MongoClient

  conn=mongo客户端( 192。168 .0 .113 ,27017)

  db=conn.mydb #连接数据库数据库,没有则自动创建

  my_set=db.test_set #使用测试集集合,没有则自动创建

  插入数据(插入插入一个列表多条数据不用遍历,效率高,保存需要遍历列表,一个个插入)

  my_set.insert({ 姓名:张三,年龄:18})

  #或

  my_set.save({ 姓名:张三,年龄:18})插入多条

  #添加多条数据到集合中

  users=[{name :张三,年龄:18},{ 名称: lisi ,年龄:20}]

  my_set.insert(用户)

  #或

  my_set.save(用户)

  查询数据(查询不到则返回无)

  #查询全部

  for i in my_set.find():

  打印(一)

  #查询名称=张三的

  对于my_set.find({name :张三 })中的我:

  打印(一)

  print(my_set.find_one({name :张三 }))

  更新数据

  my_set.update(

  查询,请按井号键查询条件

  更新,#更新的对象和一些更新的操作符

  {

  upsert: boolean,#如果不存在更新的记录,是否插入

  多:布尔,#可选,mongodb默认是假的,只更新找到的第一条记录

  写关注:文档编号可选,抛出异常的级别。

  }

  )

  把上面插入的数据内的年龄改为20

  my_set.update({name :张三},{$set:{age:20}})删除数据

  my_set.remove(

  查询,#(可选)删除的文档的条件

  {

  justOne: boolean,#(可选)如果设为真实的或1,则只删除一个文档

  写关注:文档编号(可选)抛出异常的级别

  }

  )

  #删除name=lisi的全部记录

  my_set.remove({name :张三 })

  #删除name=lisi的某个编号的记录

  id=my_set.find_one({name :张三})[_id]

  my_set.remove(id)

  #删除集合里的所有记录

  db.users.remove()

  数据库的条件操作符

  # ( ) 大于- $gt

  # ( ) 小于- $lt

  # (=) 大于等于- $gte

  # (=) 小于等于- $lte#例:查询集合中年龄大于25的所有记录

  对于my_set.find({age:{$gt:25}})中的我:

  打印(一)

  类型(判断类型)

  #找出名字的类型是线的

  对于我的集合。find({ name :{ $ type :2 } })中的我:

  打印(一)类型队对照列表

  查看代码

  排序

  在MongoDB中使用排序()方法对数据进行排序,排序()方法可以通过参数指定排序的字段,并使用一和-1 来指定排序的方式,其中一为升序,-1为降序。

  for i in my_set.find().排序([(年龄,1)]):

  打印限制和跳跃

  #限制()方法用来读取指定数量的数据

  #跳过()方法用来跳过指定数量的数据

  #下面表示跳过两条数据后读取6条

  for i in my_set.find().跳过(2)。限制(6):

  在中打印

  #找出年龄是20、30、35的数据

  对于我在我的集合里。find({ age :{ $ in :(20,30,35)}):

  打印或

  #找出年龄是20或35的记录

  对于my_set.find中的我({ $ or :[{ age :20 },{age:35}]}):

  全部打印

  dic={name:lisi , age:18, li:[1,2,3]}

  dic2={name :张三,年龄:18,李:[1,2,3,4,5,6]}

  my_set.insert

  my_set.insert(dic2)

  对于my_set.find中的I({ Li :{ $ all :[1,2,3,4]}):

  打印(一)

  #查看是否包含全部条件

  #输出:{ _ id :ObjectId( 58c 503 b 94 fc9d 44624 f7b 108 ), name :张三“年龄”:18岁李:[1,2,3,4,5,6]}

  推/全推

  my_set.update({name:lisi},{$push:{li:4}})

  对于my_set.find({name:lisi})中的我:

  打印(一)

  #输出:{li: [1,2,3,4], _ id :ObjectId( 58 c50d 784 fc 9d 44 ad 8 F2 e 803 ), age: 18, name: lisi}

  my_set.update({name:lisi},{$pushAll:{li:[4,5]})

  对于my_set.find({name:lisi})中的我:

  打印(一)

  #输出:{li: [1,2,3,4,4,5], name: lisi , age: 18, _ id :ObjectId( 58 c50 d 784 fc 9d 44 ad 8f 2e 803 )}

  弹出/拉出/拉出所有

  #流行

  #移除最后一个元素(-1为移除第一个)

  my_set.update({name:lisi},{$pop:{li:1}})

  对于my_set.find({name:lisi})中的我:

  打印(一)

  #输出:{ _ id :ObjectId( 58 c50d 784 fc 9d 44 ad 8 F2 e 803 ), age: 18, name: lisi , li: [1,2,3,4,4]}

  #拉动(按值移除)

  #移除3

  my_set.update({name:lisi},{$pop:{li:3}})

  #pullAll(移除全部符合条件的)

  my_set.update({name:lisi},{ $ pull :{ Li :[1,2,3]})

  对于my_set.find({name:lisi})中的我:

  打印(一)

  #输出:{name: lisi , _ id :ObjectId( 58 c50 d 784 fc 9d 44 ad 8 F2 e 803 ), li: [4,4], age: 18}

  多级路径元素操作

  先插入一条数据

  dic={name :张三,

  年龄:18岁,

  联系人:{

  邮箱:“1234567@qq.com”,

  iphone : 11223344}

  }

  my_set.insert

  #多级目录用。连接

  对于我的集合。查找({ 联系人。iphone : 11223344 })中的我:

  打印(一)

  #输出:{ 姓名: 张三, _ id :ObjectId( 58 C4 f99 C4 fc 9d 42 e 0022 C3 B6 ),年龄:18,联系人:{ 邮箱: 1234567@qq.com , iphone: 11223344}}

  result=my _ set。find _ one({ 联系人。iphone : 11223344 })

  打印(结果[联系人][电子邮件])

  #输出:1234567@qq.com

  #多级路径下修改操作

  result=my _ set。更新({ 联系人。iphone : 11223344 },{ $ set :{ 联系人。邮箱: 9999999 @ QQ。com })

  结果1=我的集合。find _ one({ 联系人。iphone : 11223344 })

  打印(结果1[联系人][电子邮件])

  #输出:9999999@qq.com

  还可以对数组用索引操作

  dic={name:lisi ,

  年龄:18岁,

  联系人:[

  {

  邮箱:“111111@qq.com”,

  iphone : 111},

  {

  邮箱:“222222@qq.com”,

  iphone : 222}

  ]}

  my_set.insert

  #查询

  结果1=我的集合。find _ one({ 联系人。1 .iphone : 222 })

  打印(结果1)

  #输出:{ 年龄:18, _ id :ObjectId( 58 C4 ff 574 fc9d 43844423 db 2),姓名: lisi ,联系人:[{iphone: 111 , email: 111111@qq.com},{iphone: 222 , email : 222222222 @ QQ。com }]}

  #修改

  result=my _ set。更新({ 联系人。1 .iphone : 222 },{ $ set :{ 联系人。1 .邮箱: 222222 @ QQ。com }))

  打印(结果1[联系人][1][电子邮件])

  #输出:222222@qq.com

  1 #!/usr/bin/env python

  2 # -*-编码:utf-8 -*-

  3从安装导入MongoClient

  四

  5设置={

  6 ip:192.168.0.113 ,#ip

  7 端口:27017,#端口

  8 数据库名称:我的数据库,#数据库名字

  9"设置名称":"测试设置"#集合名字

  10 }

  11

  12类MyMongoDB(对象):

  13 def __init__(self):

  14尝试:

  15 self.conn=MongoClient(设置[ip],设置[端口])

  16除了e:

  17印(英)

  18自我。db=自我。连接[设置[数据库名称]]

  19自我。my _ set=self。数据库[设置[集合名称]]

  20

  21个极好的插件(self、dic):

  22打印( inser . )

  23 self.my_set.insert(dic)

  24

  25 def更新(self、dic、newdic):

  26打印(更新.)

  27 self.my_set.update(dic,newdic)

  28

  29 def删除(self,dic):

  30打印(删除.)

  31 self.my_set.remove(dic)

  32

  33 def dbfind(self,dic):

  34打印(查找.)

  35 data=self.my_set.find(dic)

  36对于结果数据:

  37打印(结果[姓名],结果[年龄])

  38

  39 def main():

  40 dic={name :张三,年龄:18}

  41 mongo=MyMongoDB()

  42 mongo.insert(dic)

  43 mongo.dbfind({name :张三 })

  44

  45 mongo.update({name :张三},{$set:{age:25}})

  46 mongo.dbfind({name :张三 })

  47

  48 mongo.delete({name :张三 })

  49 mongo.dbfind({name :张三 })

  50

  51如果__name__==__main__ :

  52 main()

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: