如果字段不存在,则使用$ ifNull复制字段以显示空值

时间:2019-11-04 18:19:11

标签: mongodb mongodb-query aggregation-framework

我试图在文档不存在时显示为空

当我在项目中添加以下$ ifNull时,结果与预期不符,我这样做是因为某些文档没有fields.reviews.title字段,并且应用程序的开发人员要求我发送- 1或为空,而不是不发送。我没有发布整个查询,因为它太长且无关紧要,但是如果您需要它,请告诉我。

$ project中的相关字段:


        "deals.reviews.author.name": 1,
        "deals.reviews.publishedDate": 1,
        "deals.reviews.ranking": 1,
        "deals.reviews.title": {$ifNull: ["$deals.reviews.title", -1]},
        "deals.reviews.author.avatar_url": 1

结果:

[
        {
            "ranking": 3,
            "author": [
                {
                    "avatar_url": "/uploads/files/Hz9K2erg_PotpCly.jpg",
                    "name": {
                        "last": "",
                        "first": "Eb"
                    }
                }
            ],
            "publishedDate": "2019-10-25T07:08:17.538Z",
            "title": [
                [
                    "hhh",
                    "good shopping"
                ],
                [],
                [],
                []
            ]
        },
        {
            "ranking": 4,
            "author": [
                {
                    "avatar_url": "/uploads/files/Hz9K2erg_PotpCly.jpg",
                    "name": {
                        "last": "",
                        "first": "Eb"
                    }
                }
            ],
            "publishedDate": "2019-10-26T02:28:43.742Z",
            "title": [
                [
                    "hhh",
                    "good shopping"
                ],
                [],
                [],
                []
            ]
        }
    ]

如您所见,字段标题看起来像这样。

            "title": [
                [
                    "hhh",
                    "good shopping"
                ],
                [],
                [],
                []
            ]

如果不添加$ ifNull而是添加1,则结果为:

$ project:

 "deals.reviews.author.name": 1,
        "deals.reviews.publishedDate": 1,
        "deals.reviews.ranking": 1,
        "deals.reviews.title": 1,
        "deals.reviews.author.avatar_url": 1

结果:

[
        {
            "ranking": 3,
            "author": [
                {
                    "avatar_url": "/uploads/files/Hz9K2erg_PotpCly.jpg",
                    "name": {
                        "last": "",
                        "first": "Eb"
                    }
                }
            ],
            "publishedDate": "2019-10-25T07:08:17.538Z"
        },
        {
            "title": "hhh",
            "ranking": 4,
            "author": [
                {
                    "avatar_url": "/uploads/files/Hz9K2erg_PotpCly.jpg",
                    "name": {
                        "last": "",
                        "first": "Eb"
                    }
                }
            ],
            "publishedDate": "2019-10-26T02:28:43.742Z"
        }
    ]

但是正如我之前提到的,其中一个文档没有标题字段,这是导致APP出现问题的原因。

预先感谢您的帮助。

0 个答案:

没有答案