PyMongo 3.7.2 的基本用法

1.首先是下载安装MongoDB以及MongoDB Compass

MongoDB的下载地址是:https://www.mongodb.com/download-center/community
安装过程可以参考:http://www.runoob.com/mongodb/mongodb-window-install.html
注:安装过程中提示安装MongoDB Compass,需要取消勾选,后期再安装,安装地址是:https://www.mongodb.com/download-center/compass
Compass 能够帮助我这种小白很容易的了解里面的数据结构,以及直观的看到命令的效果是什么样子的。

新版本的MongoDB不需要安装 MongoDB服务,可以直接在bin文件夹下,先运行
mongod.exe,然后再运行mongo.exe,在弹出的界面中输入db,接着能够弹出啊test,基本上运行就没有问题了

在这里插入图片描述

2.基本的使用

2.1创建连接

from pymongo import MongoClient
client=MongoClient('localhost',27017)
client = MongoClient('mongodb://localhost:27017/')#另一种创建的方式

2.2创建数据库

#这里面的test_database是我们自己定义的数据库的名称,执行该命令后系统会在内部建立一个新的以test_database命名的数据库
db = client.test_database
db = client['test-database']#另一种创建方式

2.3创建一个collection

#同上,test_collection也是我们自己定义的collection名称,系统会在test_database下创建一个名为test_collection的collection。
collection = db.test_collection
collection = db['test-collection']#另一种创建方式

2.4创建文档

post = {"author": "Mike", "tags": ["mongodb", "python", "pymongo"]}
collection.insert(post)
#如果该命令再执行一次,则会有如下报错
#pymongo.errors.DuplicateKeyError: E11000 duplicate key error collection
#但是如果是使用collection.insert({'url':"http://...","html":"....."})则可以插入很多次

在这里插入图片描述
在这里插入图片描述

2.4.1创建文档

#使用这种方式,会直接新建一个名称为webpage的collection。
db.webpage.insert({'url':"http://....",'html':'............'})

在这里插入图片描述
在这里插入图片描述
如果该命令再执行一遍,不会提示报错,但是id会不一样。

db.webpage.insert({'url':"http://....",'html':'............'})

在这里插入图片描述

2.4.2更新内容update

这里面涉及到MongoDB的院子操作,见:http://www.runoob.com/mongodb/mongodb-atomic-operations.html
其中的$set,用来指定一个键并更新键值,若键不存在并创建。
手册中的是update_one,之前的update现在已经不用了,不过指令中使用update也没有报错。

update(spec, document, upsert=False, manipulate=False, multi=False, check_keys=True, **kwargs)
Update a document(s) in this collection.

DEPRECATED - Use replace_one(), update_one(), or update_many() instead.

Changed in version 3.0: Removed the safe parameter. Pass w=0 for unacknowledged write operations.

db.posts.update({'naqwme': 'wu'},{"$set":{"naqwme":"leo-wu"}})
#结果{'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}会将naqwme中的内容改成leo-wu。
db.posts.update({'naqwme': 'wu'},{"$set":{"name":"leo-wu"}})
#如果是上面的,由于搜索不到name,系统会将{"name":"leo-wu"}添加到数据中。
db.test_collection.update({'_id':url},{'$set':{'html':html}},upsert=True)
#该语句中添加了upsert,含义为如果没有匹配成功,则新建一个document。_id指定为url中的内容。

2.4.3replace_one

db.posts.replace_one({'naqwme': 'l23132eo-wu'},{"new":"wu"})
#该指令是将新文档{"new":"wu"}重新写入旧文档{'naqwme': 'l23132eo-wu'},相当于是覆盖,即使旧文档{'naqwme': 'l23132eo-wu'}含有其他的信息,也还是会被覆盖掉。得到的新文档只包含{"new":"wu"}

2.5查询一个文档find_one

collection.find_one()
#结果:{'_id': ObjectId('5cb7ecbd924f6d376cab760f'), 'author': 'Mike', 'tags': ['mongodb', 'python', 'pymongo']}
db.webpage.find_one()
#{'_id': ObjectId('5cb7f845924f6d376cab7614'), 'url': 'http://....', 'html': '............'}
collection.find_one({"author": "Mike"})
#{'_id': ObjectId('5cb7ecbd924f6d376cab760f'), 'author': 'Mike', 'tags': ['mongodb', 'python', 'pymongo']}

#通过id去查询,在插入数据的同时,需要返回id参数
posts = db.posts
post_id = posts.insert_one(post).inserted_id#返回id参数,供后期查询使用
posts.find_one({"_id": post_id})
#{'_id': ObjectId('5cb7ecbd924f6d376cab760f'), 'author': 'Mike', 'tags': ['mongodb', 'python', 'pymongo']}
#或者使用如下方法,前提是需要使用objectId
from bson.objectid import ObjectId
collection.find_one('_id': ObjectId('5cb7ecbd924f6d376cab760f'))

在这里插入图片描述

2.6查询多个文档

import pprint
for doc in db.webpage.find():
    pprint.pprint(doc)
    """
    {'_id': ObjectId('5cb7f845924f6d376cab7614'),
 'html': '............',
 'url': 'http://....'}
{'_id': ObjectId('5cb7f89c924f6d376cab7615'),
 'html': '............',
 'url': 'http://....'}
    """

2.7创建以及删除id

这个步骤不是必须的,只是可以让我们自己定义一个id,之前系统会自动生成一个id,如上所述就是“id”.本次新建的user_id可以在后期更方便的做数据处理。

import pymongo
result = db.posts.create_index([('user_id', pymongo.ASCENDING)],unique=True) 
list(db.posts.index_information())
#结果:['_id_', 'user_id_1']多出一个user_is_1
db.posts.insert({'naqwme':"wu","gen34der":"male",'user_id':12})
#返回的结果:ObjectId('5cb804ed924f6d376cab7618')
db.webpage.drop_index('user_id_1')#删除id

在这里插入图片描述

2.8删除一个文档delete_one

db.posts.delete_one({"author":"M0ike"})#这里面的Mike我在compass单独修改了,变成了M0ike。

删除之前删除之前
在这里插入图片描述

2.9删除一个collection

db.drop_collection('webpage')
#结果:{'ns': 'test_database.webpage', 'nIndexesWas': 1, 'ok': 1.0}

在这里插入图片描述
在这里插入图片描述

2.10删除一个database

client.drop_database("test_database")
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值