Python中MongoDB的使用方法

本文介绍了MongoDB的基本概念,解释了为何选择MongoDB,并详细阐述了如何在Python中使用pymongo库进行数据库连接、数据操作,包括插入、删除、更新和查询等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、MongoDB是什么

        在百度上查询的时候主要看到三个关键字,数据库、非关系型、查询功能强大。总结为查询功能强大的非关系型数据库。什么是数据库,应该是用来存储数据的,非关系型的意思???不不不,关系型的意思我都不懂,查询功能强大的意思应该是查询起来很方便,应该有很多不同的方法的来查询需要的数据。


二、为什么使用MongoDB

        简而言之就是MongoDB有什么优点,你以为我会很正经的列出一大堆理由????不不不,我会告诉你选择MongoDB的原因是我在看《用Python学网络爬虫》!!!!!里面就用到了MongoDB!!!!!


三、MongoDB怎么在Python中使用

        正文终于开始了!!!!!!大家快拿小本本,把知识点记起来!!!!!因为我的最终目的是为了实现《用Python写网络爬虫》的代码,所以就直接写pymongo的用法了,至于怎么安装和配置会在另外一篇文章中介绍,谁叫我是为了看懂代码,连MongoDB都还没安装就来吹MongoDB怎么使用呢。。。。。

1、怎么连接MongoDB

from pymongo import MongoClient

client = MongoClient('localhost',27017)

上述代码的意思是MongoDB连接上本地主机,端口号为27017

2、怎么获得数据库

db = client.primer

cache是数据库的名字,可以随便取

3、怎么获得集合

collection = db.students

4、查看数据库中的所有集合

db.collection_names()

5、怎么删除一个集合

db.collection.drop()

    collection是集合的名字

6、怎么查看集合中的数据数目

db.collection.count()

7、怎么插入数据

db.students.insert()

db.students.insert_one()

db.stendents.insert_many([])

    暂时发现的就只有这三种方法,三种方法返回的类型并不一样。

    insert()返回值是‘_id’的值,若‘_id’缺省,'_id'的值为bson.objectid的ObjectId。该方法可以插入多条数据也可以直插入一条数据。

    insert_one()返回值是InsertOneResult,可以根据dir()查看该对象的属性值

    insert_many()能一次插入多条数据,返回值是InsertManyResult对象。

8、怎么删除集合中的数据

remove()

delete_one()

delete_many()

    remove()能只删除一条数据,也可以删除多条数据,参数是query,即匹配条件。返回值是字典,可以查看删除了多少条数据。当需要只删除一条数据时,multi=False,默认值为True。

    delete_one和delete_many顾名思义,和删除多条或单条数据的remove一样,只不过返回值为DeleteResult

9、怎么更新数据

update()

find_and_modify()

    我觉得两个方法都是一样的,但是update可以更改多条数据,find_and_modify就算添加multi=True同样不能更新多条数据。所以下面主要讲update方法。

    update的第一个参数是query,即查询条件,第二个是更新内容,第三个是upsert,第四个是multi。upsert是若匹配的数据没有更新属性,则添加,否则不更新该属性。multi为True时,能更新所有匹配数据。upsert在没有使用‘$set’的时候,会吧更新内容替代匹配数据,慎用!!!!

    $set                更新任意字段

db.students.update(
    {'age':{'$lt':28}},
    {'$set':{'age':26}},
     upsert=True,
     multi=True
)

    $unset            删除任意字段

db.students.update(
    {},
    {'$unset':{'age':1}},
     upsert=True,
     multi=True
)


$push                在特定字段追加内容

        若该字段存在,则在后面追加内容,若不存在则添加仅有该追加内容的数组,若字段存在但值不为数组,则报错。

db.students.update(
    {},
    {'$push':{'new':4}},
     upsert=True,
     multi=True
)

$pushAll        在特定字段追加数组,与$push使用方法一致

$addToSet    在特定字段追加内容,与$push一样一样的!

$pop            在特定字段删除内容

$pull            在特定字段删除内容,与$pop一样

$pullAll        在特定字段删除内容,内容为数据


10、怎么查找数据

find(query,projection)

query是查找条件

        projection可以选择显示那些键,有两种模式,第一种是需要显示的字段置1,其他字段均不显示;第二种是不需要显示的字段置0,显示其他字段。两种模式不能混用。

db.students.find(
    {},
    projection = {
        'age' : 1,
        'name' : 1
    }
)


11、比较符号

$lt                   <

$gt                  >

$lte                 <=

$gte                >=

$eq                  =

$ne                   !=


12、逻辑符号

$and                    逻辑与            a == True    and    b == True

$or                       逻辑或            a == True    or    b == True

$not                     逻辑非            a != True

$nor                     逻辑非或    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值