MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB 是目前最流行的 NoSQL 数据库之一,MongoDB使用了BSON(类似 JSON)这种结构来存储数据和网络数据交换。本文主要介绍Python MongoDB find 查找。

在MongoDB中,我们使用find和findOne方法在集合中查找数据,就像使用SELECT语句在MySQL数据库中的表中查找数据一样。

1、find_one()查询一条

要从MongoDB中的集合中选择数据,我们可以使用find_one()方法。

find_one()方法返回选择中的第一个匹配项。

例如:

在customers集合中找到第一个文档:

import pymongo

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

x = mycol.find_one()

print(x)

2、find()查询所有

要从MongoDB中的表中选择数据,我们还可以使用 find()方法。

find()方法返回所选内容中的所有匹配项。

find()方法的第一个参数是查询对象。在此示例中,我们使用一个空的查询对象,该对象选择集合中的所有文档。

在MySQL中,find()方法中的任何参数都无法提供与SELECT *相同的结果。

例如:

返回“customers”集合中的所有文档,并打印每个文档:

import pymongo

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

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

3、只返回某些字段

find()方法的第二个参数是一个对象,它描述要在结果中包括哪些字段。

此参数是可选的,如果省略,则所有字段都将包含在结果中。

例如:

仅返回name和address,而不返回_id:

import pymongo

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

for x in mycol.find({},{ "_id": 0, "name": 1, "address": 1 }):
    print(x)

不允许在同一对象中同时指定0和1值(除非其中一个字段是_id字段)。如果您指定值为0的字段,则所有其他字段的值为1,反之亦然:

例如:

此示例将从结果中排除“address”:

import pymongo

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

for x in mycol.find({},{ "address": 0 }):
    print(x)

例如:

如果在同一对象中同时指定0和1值,则会出现错误(除非其中一个字段是_id字段):

import pymongo

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

for x in mycol.find({},{ "name": 1, "address": 0 }):
    print(x)

推荐文档