zoukankan      html  css  js  c++  java
  • 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的操作符(详见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> } }

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

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

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

    (4)评估操作符

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

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

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

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

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

    附表1MongoDB数据类型

    mestamp”

    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 "182" valign="top" style="border:solid #A3A3A3 1.0pt;background:white;">

    JavaScript

    13

    javascript

     

    Symbol

    14

    symbol

    Deprecated.

    JavaScript (with scope)

    15

    javascriptWithScope

     

    32-bit integer

    16

    int

     

    64-bit integer

    18

    long

     

    Decimal128

    19

    decimal

    New in version 3.4.

    Min key

    -1

    minKey

     

    Max key

    127

    “maxKey”

     


  • 相关阅读:
    确定方法返回位置为泛型的类型
    centos7 svn服务器搭建
    centos7优化启动项,关闭一些不必要开启的服务
    使用windos电脑模拟搭建集群(四)web环境 linux+nginx+jdk+tomcat
    java使用BeanUtils封装file类型表单数据到一个对象中
    表单隐藏域
    本地yum仓库的搭建
    centos7 挂载exfat格式的u盘
    三体
    海盗分金的故事
  • 原文地址:https://www.cnblogs.com/lazyfish007/p/11615129.html
Copyright © 2011-2022 走看看