pymongo基础使用方法

本文通过文章同步功能推送至博客园,排版可能会有所错误,敬请见谅!

1.客户端初始化

初始化MongoDB客户端

client = pymongo.MongoClient('localhost',27017)

 

2.创建数据库和数据表

pymongo支持以字典或属性的形式(内置了__item____getattr__方法)连接数据库和数据表,若该数据库/表不存在,则创建。

db = client['mydatabase']

sheet = db['sheetname']

 

3.数据的增加

pymongo中,对数据的增删改查,全部在数据表对象(sheet)中执行。

MongoDB属于非关系型数据库,它被常用于存储JSON结构,可以很方便的存储序列化信息。

·insert_one方法

·insert_many方法

·insert方法

(1)insert_one插入一条记录

insert_one(document, bypass_document_validation=False, session=None)

document往往是一条以字典形式的数据

可以是

data = {

'city': soup.find(attrs={'name': 'location'})['content'].split('city=')[-1].split(';')[0],

'district':soup.title.get_text().split('短租房')[0][1:] + '',

'title': soup.select('#indexPage > div > div.houseIntroduce > div.border_b > p')[-1].get_text().strip(),

'addr': soup.select('#indexPage > div > section > p')[0].get_text().strip(),

'price': int(soup.select('div.priceBox > div > div > span.newPcrice')[0].get_text().strip()),

'introduce':soup.select('div.houseIntroduceBox > div.houseIntroduce_P_con > p')[0].get_text().strip(),

'tags':[],

}

(2)insert_many插入多条记录

insert_one(document, ordered=True, bypass_document_validation=False,

session=None)

document是一个可迭代对象,通常是数据组成的列表或者元组。

ordered如果为真,数据将按照提供的顺序连续插入数据表,否则以任意顺序。

(3)insert方法

pymongo3.6.1中,insert方法是不被赞成的方法,请使用insert_one或者insert_many

 

4.数据的删除

 

使用下面几种方法可以删除任意条数据:

 

·delete_one方法

·delete_many方法

(1)delete_one删除一条记录

delete_one(filter, collation=False, session=None)

filter为字典形式的查询对象

(2)delete_many删除多条记录

delete_many(filter, collation=False, session=None)

filter为字典形式的查询对象

(3)find_one_and_delete找到并删除一条数据

find_one_and_delete(filter, projection=None, sort=None, session=None)

 

5.数据的修改

·replace_one方法

·update_one方法

·update_many方法

(1)replace_one替换一条记录

replace_one(filter, replacement, upsert=False,

bypass_document_validation=False, collation=None,

session=None)

filter是过滤条件

replacement是替换后的数据

upsert如果为真,则当找不到过滤条件时,会直接插入替换后的数据。

(2)update_one修改一条记录数据

replace_one替换方法的简单粗暴相比,update_one更注重于修改一条数据本身,update方法系列也支持更高级的操作符。

update_one(filter, update, upsert=False,

bypass_document_validation=False,

collation=None, array_filters=None, session=None)

 

filter是过滤条件

update是要修改字段的数据集合(通常以字典表现)

update支持MongoDB的操作符(详见8、MongDB的操作运算符),这是一个非常重要的特性。

 

6.数据的查询

·find方法

·find_one方法

(1)find查询所有匹配数据

sheet.find({'district':'岳麓区', 'deposit':{'$lt':301}})

(2)find_one查询匹配的第一条数据

使用方法与find一致。

在数据的查询中,主要掌握MongoDB的操作运算符才是灵活使用的关键点。

 

7.其他内置方法

·count()-返回查询结果数量

·sorted() -接收一个字段,按其排序

·create_index()-创建索引详见官方文档

 

8.补充:MongDB的操作运算符

参考资料:mongodb常用操作符

(1)比较操作符

·$gt- 匹配字段值大于指定值的文档( > )

·$lt- 匹配字段值大于指定值的文档( < )

·$gte - 匹配字段值大于等于指定值的文档( >= )

·$lte - 匹配字段值小于等于指定值的文档( <= )

·$eq- 匹配字段值等于指定值的文档( = )

·$in- 匹配字段值等于指定数组中的任何值

o{ field: { $in: [<value1>, <value2>, ... <valueN> ] } }

·$ne- 匹配字段值不等于指定值的文档,包括没有这个字段的文档

·$nin - 字段值不在指定数组或者不存在

o{ field: { $nin: [<value1>, <value2>, ... <valueN> ] } }

(2)逻辑操作符

·$or- 文档至少满足其中的一个表达式

o{ $or: [ { <expression1> },... , { <expressionN> } ] }

·$and - 文档同时满足所有的表达式

o{ $and: [ { <expression1> },... , { <expressionN> } ] }

·$nor - 字段值不匹配所有的表达式的文档,包括那些不包含这些字段的文档

o{ $nor: [ { <expression1> },... , { <expressionN> } ] }

(3)元素操作符

·$type- 匹配字段值为指定数据类型的文档(详见)

o{ field: { $type: <BSON type number> | <String alias> } }

osheet.find({'deposit':{'$type':'string'}})

osheet.find({'deposit':{'$type':2}})

·$exists - 匹配字段存在的数据

(4)评估操作符

·$mod- 匹配字段值被除有指定的余数的文档

o{ field: { $mod: [ divisor(除数), remainder(余数) ] } }

·$regex - 正则表达式可以匹配到的文档

o{ <field>: { $regex: 'pattern', $options: '<options>' } }

·$text- 针对创建了全文索引的字段进行文本搜索

附表1MongoDB数据类型

 

Type

Number

Alias

Notes

Double

1

double

 

String

2

string

 

Object

3

object

 

Array

4

array

 

Binary data

5

binData

 

Undefined

6

undefined

Deprecated.

ObjectId

7

objectId

 

Boolean

8

bool

 

Date

9

date

 

Null

10

null

 

Regular Expression

11

regex

 

DBPointer

12

dbPointer

Deprecated.

JavaScript

13

javascript

 

Symbol

14

symbol

Deprecated.

JavaScript (with scope)

15

javascriptWithScope

 

32-bit integer

16

int

 

Timestamp

17

timestamp

 

64-bit integer

18

long

 

Decimal128

19

decimal

New in version 3.4.

Min key

-1

minKey

 

Max key

127

“maxKey”

 


 

猜你喜欢

转载自www.cnblogs.com/lazyfish007/p/11541269.html