Python+MongoDB:查询文档并筛选字段的基础教程

在MongoDB中,如果想获取集合内的文档,可以使用find_one()find()方法,与关系型数据库的SELECT功能类似。Python的pymongo驱动提供了方便的接口来执行这些操作。

1. 获取单条文档 (find_one)

如果只想获取某集合内的第一条匹配文档,可使用find_one()

import pymongo

myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["mydatabase"]
mycol = mydb["customers"]

# 获取 customers 集合中第一条文档
doc = mycol.find_one()
print(doc)

上例会返回集合中的第一条记录,没有任何条件时相当于“取第一条”。

2. 获取所有文档 (find)

若要遍历所有文档,使用find()方法:

for x in mycol.find():
    print(x)

不带参数时相当于查询集合内“所有文档”,相似于MySQL的SELECT *

3. 仅返回部分字段

我们可以指定想要返回或排除的字段。第一个参数为查询条件,第二个参数为字段筛选对象:

# 仅返回 name 和 address,不包含 _id
for x in mycol.find({}, { "_id": 0, "name": 1, "address": 1 }):
    print(x)
  • _id: 0 表示不返回 _id 字段。
  • name: 1address: 1 表示这两个字段需要返回。

也可通过排除字段方式,例如:

# 排除 address,显示其他所有字段
for x in mycol.find({}, { "address": 0 }):
    print(x)

注意:在同一个筛选对象里,除了 _id 字段外,不允许同时包含 1 和 0。

其他注意点

  • 如果集合为空或不匹配任何条件,find_one()返回Nonefind()返回空迭代器。
  • 部分字段语法中,_id可以独立为0或1,而其他字段若指定1,就不得指定其他字段为0,反之亦然。

通过以上方法,便可在Python里轻松查询MongoDB集合内容,并指定返回字段范围,让你更灵活地处理数据。