如何选择和返回MongoDB中的内部对象

发布于 2025-01-31 05:07:49 字数 2423 浏览 2 评论 0原文

我只想从下面的文档的单一形式中检验响应,我正在使用pymongo,所以我正在使用.find()方法。

我所做的每个查询也会返回其他字段,因此我对需要使用哪些参数感到困惑。

这很奇怪,因为我尝试使用:

pprint(list(collection.find(
    {'forms.id': "33b66684-24a9-4a45-a12f-27a330152ac8"}, {'forms': 1, '_id': 1}
)))

它返回两种形式而不是一种形式。

[
    {
        "_id": ObjectId("6283a32ab85dce6cc4869bb9"),
        "company": "turivius",
        "forms": [
            {
                "current_version": 0,
                "history": [
                    {
                        "content": [
                            {
                                "field_id": 1,
                                "helperText": "qualquer arquivo",
                                "type": "file",
                            }
                        ],
                        "layout": [
                            {"h": 50, "id": 1, "type": "file", "w": 100, "x": 0, "y": 1}
                        ],
                        "responses": [
                            {
                                "client_id": 100,
                                "response_date": datetime.datetime(2022, 5, 17, 3, 0),
                                "values": [
                                    {"field_id": 0, "value": "um texto"},
                                    {"field_id": 1, "value": "ICIwIn0="},
                                ],
                            }
                        ],
                        "version": 0,
                    }
                ],
                "id": "33b66684-24a9-4a45-a12f-27a330152ac8",
                "is_active": True,
            },
            {
                "current_version": 0,
                "history": [],
                "id": "fa2eb9a1-c7c4-4b64-b682-7f51658bc4ab",
                "is_active": True,
                "name": "Vrau",
            },
        ],
        "user_id": "1",
    },
    {
        "_id": ObjectId("6283f19f066cf68667a9327d"),
        "company": "turivius",
        "forms": [],
        "user_id": "-1",
    },
]

进行查询后,我想返回:

[
    {
        "client_id": 100,
        "response_date": datetime.datetime(2022, 5, 17, 3, 0),
        "values": [
            {"field_id": 0, "value": "um texto"},
            {"field_id": 1, "value": "ICIwIn0="},
        ],
    }
]

I would like to retrive just the responses from a single form of the document below, I'm using pymongo, so I'm using the .find() method.

Every query I do Al other fields are returned too, So I'm confused about which parameters I need to use.

It's strange because whe I try to use:

pprint(list(collection.find(
    {'forms.id': "33b66684-24a9-4a45-a12f-27a330152ac8"}, {'forms': 1, '_id': 1}
)))

It returns two forms instead of one.

[
    {
        "_id": ObjectId("6283a32ab85dce6cc4869bb9"),
        "company": "turivius",
        "forms": [
            {
                "current_version": 0,
                "history": [
                    {
                        "content": [
                            {
                                "field_id": 1,
                                "helperText": "qualquer arquivo",
                                "type": "file",
                            }
                        ],
                        "layout": [
                            {"h": 50, "id": 1, "type": "file", "w": 100, "x": 0, "y": 1}
                        ],
                        "responses": [
                            {
                                "client_id": 100,
                                "response_date": datetime.datetime(2022, 5, 17, 3, 0),
                                "values": [
                                    {"field_id": 0, "value": "um texto"},
                                    {"field_id": 1, "value": "ICIwIn0="},
                                ],
                            }
                        ],
                        "version": 0,
                    }
                ],
                "id": "33b66684-24a9-4a45-a12f-27a330152ac8",
                "is_active": True,
            },
            {
                "current_version": 0,
                "history": [],
                "id": "fa2eb9a1-c7c4-4b64-b682-7f51658bc4ab",
                "is_active": True,
                "name": "Vrau",
            },
        ],
        "user_id": "1",
    },
    {
        "_id": ObjectId("6283f19f066cf68667a9327d"),
        "company": "turivius",
        "forms": [],
        "user_id": "-1",
    },
]

After do the query, I want to return it:

[
    {
        "client_id": 100,
        "response_date": datetime.datetime(2022, 5, 17, 3, 0),
        "values": [
            {"field_id": 0, "value": "um texto"},
            {"field_id": 1, "value": "ICIwIn0="},
        ],
    }
]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤单情人 2025-02-07 05:07:49

表单字段的操作员。

db.collection.find({
  "forms.id": "33b66684-24a9-4a45-a12f-27a330152ac8"
},
{
  "forms.$": 1,
  "_id": 1
})

Work with $ operator for forms field.

db.collection.find({
  "forms.id": "33b66684-24a9-4a45-a12f-27a330152ac8"
},
{
  "forms.
quot;: 1,
  "_id": 1
})

Sample Mongo Playground

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文