📜  Python MongoDB-查询(1)

📅  最后修改于: 2023-12-03 14:46:00.582000             🧑  作者: Mango

Python MongoDB-查询

简介

MongoDB是一个开源的文档数据库,支持JSON形式的文档和动态查询。在Python中,我们可以通过PyMongo这个驱动程序来使用MongoDB。本文将介绍如何使用Python中PyMongo驱动程序进行MongoDB查询。

安装PyMongo

在Python中使用PyMongo前,我们需要先安装它:

!pip install pymongo

或者使用conda:

!conda install -c anaconda pymongo
连接MongoDB

在使用MongoDB前,我们需要先与MongoDB建立连接:

import pymongo

client = pymongo.MongoClient("mongodb://localhost:27017/")

db = client["mydatabase"]

将会连接到MongoDB本地实例,并创建一个名为mydatabase的数据库对象。

查询文档

MongoDB中,我们通常使用find()方法来查询文档。下面是查询全部文档的例子:

collection = db["mycollection"]

docs = collection.find()

for doc in docs:
    print(doc)

查询后返回的文档列表可以使用for循环逐一读取,也可以使用列表推导式生成新的列表:

docs = [doc for doc in collection.find()]
过滤文档

使用find()方法可以进行简单的文档查询,但如果需要更复杂的过滤,可以使用query参数,并使用特定的比较运算符。

例如,我们如果要查询年龄大于18岁的人员信息:

docs = collection.find({"age": {"$gt": 18}})

for doc in docs:
    print(doc)

这里使用了比较运算符$gt,表示大于。

还可以使用$lt表示小于,$gte表示大于等于,$lte表示小于等于。

除了比较运算符外,还可以使用逻辑运算符来进行复杂的过滤:

  • $and: 与
  • $or: 或
  • $not: 非

例如,我们要查询既是男性又年龄大于18岁的人员信息:

docs = collection.find({"$and": [{"sex": "male"}, {"age": {"$gt": 18}}]})

for doc in docs:
    print(doc)

这里使用了逻辑运算符$and,表示与。

指定字段

在查询文档时,我们可以通过第二个参数projection指定返回的字段,可以使用以下方式:

  • 1表示返回该字段
  • 0表示不返回该字段

例如,我们要查询只返回姓名的信息:

docs = collection.find({}, {"name": 1, "_id": 0})

for doc in docs:
    print(doc)
排序

查询的结果可以使用sort()方法进行排序,传入一个排序规则字典:

  • 1表示升序
  • -1表示降序

例如,我们要查询年龄大于18岁的人员信息,并按年龄排序:

docs = collection.find({"age": {"$gt": 18}}).sort("age", 1)

for doc in docs:
    print(doc)
分页

查询结果可以使用limit()skip()方法进行分页,limit()用于指定每页显示的文档数,skip()用于指定查询的起始位置。

例如,我们要查询前10条年龄大于18岁的信息:

docs = collection.find({"age": {"$gt": 18}}).limit(10)

for doc in docs:
    print(doc)

或者查询第11~20条年龄大于18岁的信息:

docs = collection.find({"age": {"$gt": 18}}).skip(10).limit(10)

for doc in docs:
    print(doc)

以上就是Python中使用PyMongo驱动程序进行MongoDB查询的介绍。查询语法十分灵活,可以满足各种需求,非常适合处理大量非结构化数据。