python pymongo“投影”排除所有字段,只得到选定的字段?

mo49yndu  于 2022-12-10  发布在  Python
关注(0)|答案(1)|浏览(187)

使用mongodb projection,我们可以定义包含哪些字段,排除哪些字段。
就像这样:

data = db.Users.find_one({'username': user },{"_id":0,"password":0,"email":1})

此查询将排除_idpassword字段,仅包含email

但是,是否有一种方法可以排除文档中存在的所有字段,而只获取emailphone

在较小的文档中,我可以将不需要的项目的项目值设置为0,但对于较大的文档,是否有方法自动排除所有其他字段/项目,仅获取需要的项目?

n3ipq98p

n3ipq98p1#

您提供的特定命令/语法实际上 * 无效 *:

> db.Users.findOne({'username': 'user' },{"_id":0,"password":0,"email":1})
MongoServerError: Cannot do inclusion on field email in exclusion projection

您可以在this playground example中看到相同的故障。
但是,默认情况下,投影将完全按照您的要求进行操作。

仅返回指定的字段和_id字段通过在投影文档中将<field>设置为1,投影可以显式包括多个字段。

因此,如果将投影的(无效)"password":0分量替换为"phone":1,则命令如下所示:

data = db.Users.find_one({'username': user },{"_id":0,"phone":1, "email":1})

它将按照您的要求运行。this playground example中的演示。

相关问题