MongoDB操作
Posted 临风而眠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB操作相关的知识,希望对你有一定的参考价值。
MongoDB操作(5)
文章目录
pymongo的使用
一.在pycharm中配置MongoDB相关
1.在pycharm中安装pymongo
在后面遇到的问题中讲了
2.安装Mongo Plugin
搜了好多教程,比如这篇博客,都说去 File→Settings→Plugins
搜相关的插件并安装,但是…搜不到他们说的
终于,看到了★★★这篇博客:Pycharm中配置mongodb(2021年最新教程),救了我!
原来,新版的PyCharm已经搜不到MongoDB Plugin!
要去官网下载
下载下来之后不要解压,就放在pycharm的插件目录下面,比如我的:
D:\\PyCharm 2020.3.4\\plugins\\mongo4idea.zip
然后还是在那个界面,选择Install Plugin from Disk
选择压缩包之后,会显示如下:
此时点击Restart IDE
,重启pycharm
重启之后就能看到Mongo Explorer(可视化工具)
3.设置Mongo Plugin
找到mongod.exe的路径,复制到图中所示位置,点击test,如果打✔,说明位置没错
4.在Mongo Explorer中创建数据库
输入Label,点击Test Connection,再点击OK,就🆗了
成功连接了本机的mongodb数据库!
二.pymongo初体验
1.hello,pymongo
增
插入一条数据
from pymongo import MongoClient
#实例化client,建立连接
#其实本机不用传
client = MongoClient(host="127.0.0.1",port=27017)
#选定集合
collection = client["test1"]["a"]
#插入一条数据
collection.insert_one({"name":"xiaowang","age":1})
先后两次查询数据库,可以发现,成功插入了数据
插入多条数据
from pymongo import MongoClient
#实例化client,建立连接
#其实本机不用传
client = MongoClient(host="127.0.0.1",port=27017)
#选定集合
collection = client["test1"]["a"]
#插入多条数据
data_list =[{"name":"test_inser{}".format(i)} for i in range(20)]
collection.insert_many(data_list)
'''
这样子放在列表里一起插入比用循环每次循环插入单条数据效率更高
'''
插入成功:
查
查询一条数据
from pymongo import MongoClient
#实例化client,建立连接
#其实本机不用传
client = MongoClient(host="127.0.0.1",port=27017)
# #选定集合
collection = client["test1"]["a"]
#查询一条记录
t=collection.find_one({"name":"xiaowang"})
print(t)
返回结果:
{'_id': ObjectId('6115181f65c062621764e204'), 'name': 'xiaowang', 'age': 1}
查询多条数据
from pymongo import MongoClient
#实例化client,建立连接
#其实本机不用传
client = MongoClient(host="127.0.0.1",port=27017)
# #选定集合
collection = client["test1"]["a"]
#查询所有记录
t=collection.find({"name":"xiaowang"})
print(t)
返回结果:
<pymongo.cursor.Cursor object at 0x000001DB28C1F250>
这是mongoDB的游标对象,是一个可迭代对象,类似于读文件的指针
尝试进行遍历操作:
from pymongo import MongoClient
#实例化client,建立连接
#其实本机不用传
client = MongoClient(host="127.0.0.1",port=27017)
# #选定集合
collection = client["test1"]["a"]
#查询所有记录
t=collection.find({"name":"xiaowang"})
print(t)
for i in t:
print("第一次遍历",i)
for j in t:
print("第二次遍历",j)
<pymongo.cursor.Cursor object at 0x000001DD019CF520>
第一次遍历 {'_id': ObjectId('6115181f65c062621764e204'), 'name': 'xiaowang', 'age': 1}
第一次遍历 {'_id': ObjectId('61152d6e04c4354786d00677'), 'name': 'xiaowang'}
第一次遍历 {'_id': ObjectId('61152d7004c4354786d00678'), 'name': 'xiaowang'}
第一次遍历 {'_id': ObjectId('61152d7904c4354786d00679'), 'name': 'xiaowang', 'age': 19.0}
可以看出,并没有进行第二次遍历,因为第一次循环结束时,游标已经在最后的位置了,无法继续取得结果了
#可以进行强制类型转换
t=collection.find({"name":"xiaowang"})
print(list(t))
返回结果:
[{'_id': ObjectId('6115181f65c062621764e204'), 'name': 'xiaowang', 'age': 1}, {'_id': ObjectId('61152d6e04c4354786d00677'), 'name': 'xiaowang'}, {'_id': ObjectId('61152d7004c4354786d00678'), 'name': 'xiaowang'}, {'_id': ObjectId('61152d7904c4354786d00679'), 'name': 'xiaowang', 'age': 19.0}]
改
更新一条数据
from pymongo import MongoClient
#实例化client,建立连接
#其实本机不用传
client = MongoClient(host="127.0.0.1",port=27017)
# #选定集合
collection = client["test1"]["a"]
#更新一条数据
collection.update_one({"name":"xiaowang"},{"$set":{"name":"new_xiaowang"}})
更新多条数据
from pymongo import MongoClient
#实例化client,建立连接
#其实本机不用传
client = MongoClient(host="127.0.0.1",port=27017)
# #选定集合
collection = client["test1"]["a"]
#更新全部数据
collection.update_many({"name":"xiaowang"},{"$set":{"name":"new_xiaowang"}})
删
删除一条数据
from pymongo import MongoClient
#实例化client,建立连接
#其实本机不用传
client = MongoClient(host="127.0.0.1",port=27017)
# #选定集合
collection = client["test1"]["a"]
# 删除一条数据
collection.delete_one({"name":"new_xiaowang"})
删除多条数据
from pymongo import MongoClient
#实例化client,建立连接
#其实本机不用传
client = MongoClient(host="127.0.0.1",port=27017)
# #选定集合
collection = client["test1"]["a"]
#删除全部数据
collection.delete_many({"name":"new_xiaowang"})
三.遇到的问题
1.pycharm虚拟环境中安装pymongo
和前面mysql一样,架着梯子会安装失败,装的时候要把梯子收起来
Settings => Project: => Project Interpreter找到:
安装的时候可以specify version ,这就是虚拟环境的好处之一
我是一开始用vscode建的py文件,然后突然想用pycharm玩一玩,以前如果用pycharm都是先用pycharm建立虚拟环境,再建文件,这次是后建立虚拟环境,摸索了一下
点击设置按钮,然后add,就可以了
其实上面那一波操作还是没啥用…
还是显示 no moudle named pymongo
解决
然后我去Problems里面点击那个报红的地方,点击show quick fixes里面的install…
成功了…😔
以上是关于MongoDB操作的主要内容,如果未能解决你的问题,请参考以下文章
VSCode自定义代码片段15——git命令操作一个完整流程
VSCode自定义代码片段15——git命令操作一个完整流程
ios - Heroku 和 MongoDb 上的自定义解析服务器错误 3080:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项