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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。