如何在mongoengine中仅包含选定的嵌入式文档?

罗希特·哈特里(Rohit Khatri)

我正在获取基于specific的文档EmbeddedDocument,但我不想EmbeddedDocuments在检索时花所有的时间,而只EmbeddedDocument与main匹配Document

这是我的代码:

学校嵌入式文件

class School(EmbeddedDocument):
    name = StringField(max_length=120)

用户文件

class User(Document):
    first_name = StringField(max_length=60, required=True)
    last_name = StringField(max_length=60)
    schools = EmbeddedDocumentListField(School)

送入文件:

user = User.objects.create(first_name="Rohit", last_name="Khatri")
user.schools = [
    School(name="Auden High School")),
    School(name="Baldwin Boys High School"),
    School(name="Baldwin Girls High School"),
    School(name="Aukamm Elementary School"),
    School(name="Mason-Rice Elementary")
]
user.save()

user = User.objects.create(first_name="ABC", last_name="DEF")
user.schools = [
    School(name="Little Harbor Elementary School")),
    School(name="Aukamm Elementary School"),
    School(name="Mason-Rice Elementary")
]
user.save()

我正在使用此代码来检索users在其schools领域中拥有特定学校的人

users = User.objects(school__match={"name": "Aukamm Elementary School"})

我只想获取Aukamm Elementary School学校字段中的选定学校

接收

[
    {
        "first_name": "Rohit",
        "last_name": "Khatri",
        "schools": [
            {
                "name": "Auden High School"
            },
            {
                "name": "Baldwin Boys High School"
            },
            {
                "name": "Baldwin Girls High School"
            },
            {
                "name": "Aukamm Elementary School"
            },
            {
                "name": "Mason-Rice Elementary"
            }
        ]
    },
    {
        "first_name": "ABC",
        "last_name": "DEF",
        "schools": [
            {
                "name": "Little Harbor Elementary School"
            },
            {
                "name": "Aukamm Elementary School"
            },
            {
                "name": "Mason-Rice Elementary"
            }
        ]
    }
]

要求的输出

[
    {
        "first_name": "Rohit",
        "last_name": "Khatri",
        "schools": [
            {
                "name": "Aukamm Elementary School"
            }
        ]
    },
    {
        "first_name": "ABC",
        "last_name": "DEF",
        "schools": [
            {
                "name": "Aukamm Elementary School"
            }
        ]
    }
]

谢谢

克列丹

您可以$filteraggregate函数中使用运算符

users = User.objects(school__match={ "name": "Aukamm Elementary School" }).aggregate(
    { "$project": {
        "first_name": 1,
        "last_name": 1,
        "schools": {
             "$filter": {
                  "input": "$schools",
                  "as": "school",
                  "cond": { "$eq": [ "$$school.name", "Aukamm Elementary School" ] }
             }
        }
    } }
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

更新嵌入式Mongo文档-Mongoengine

查询MongoEngine中的嵌入式文档列表

如何在C ++中嵌入Chromium嵌入式框架

MongoEngine:从嵌入式文档获取父文档

如何在mongoDB中的嵌入式文档中提取特定元素

从嵌入式文档中删除字段

如何在数组中的嵌入式文档中指定/投影字段?

如何在嵌入式文档中查询$ regex以计算不同的值

如何在mongodb中搜索嵌入式文档?

如何在嵌入式文档中查找某个元素

如何使用Mongoengine REST将数据发布到嵌入式文档

MongoEngine中嵌套的嵌入式文档的验证错误

Mongoengine-仅保存一个嵌入式文档

如何在嵌入式数组mongodb中查询嵌入式文档

如何在mongoDB中的多对多关系中使用嵌入式文档结构?

如何测试Mongoid的嵌入式文档?

如何对嵌入式文档进行排序?

Mongoengine:如何设置仅包含其ID而不是整个嵌入式json的对另一个模型的引用?

查询MongoDB中的嵌入式文档

如何在Rails和Mongoid中查询嵌入式文档

如何删除重复的嵌入式文档

在Django,Python中使用MongoEngine查询嵌入式文档

如何在MongoDB中查询数组中的单个嵌入式文档?

与数组比较,如何在mongodb中检索部分嵌入式文档?

在mongodb中展开嵌入式文档

如何在Meteor中循环浏览嵌入式文档

drf-mongoengine DynamicDocumentSerializer不包含嵌入式字段

如何在 MongoDb 中查询嵌入式文档?

如何在 rails only 查询中包含嵌入式文档