MongoDB查询中带有特殊字符的键

问题描述 投票:0回答:1

就我而言,我在MongoDB数据库中有一些键,这些键的名称中包含一个点(请参阅所附的屏幕截图)。我已经读过,可以通过这种方式在MongoDB中存储数据,但是驱动程序会阻止在键中带有点的查询。无论如何,在我的MongoDB数据库中,键确实包含点,因此我必须使用它们。

我现在尝试对查询中的点进行编码(。到\ u002e),但似乎没有用。然后,我想到了使用正则表达式将查询中的点替换为任何字符的想法,但是正则表达式似乎仅适用于值而不适用于键。

有人对我如何解决这个问题有创意吗?例如,我要获取'cve_results.BusyBox 1.12.1'的所有CVE号。

更新#1:cve_results的结构如下:

"cve_results" : {
            "BusyBox 1.12.1" : {
                "CVE-2018-1000500" : {
                    "score2" : "6.8",
                    "score3" : "8.1",
                    "cpe_version" : "N/A"
                },
                "CVE-2018-1000517" : {
                    "score2" : "7.5",
                    "score3" : "9.8",
                    "cpe_version" : "N/A"
                }
            }}

MongoDB data

regex mongodb mongodb-query special-characters
1个回答
0
投票

[如果可能的话,可能值得使用\u002e而不是点插入文档,那样一来,您可以查询它们,同时保留任何客户端渲染的.的ASCII值。

但是,似乎可以像这样查询它们:

(假设cve_results是文档中的字段)

db.collection.aggregate({ 
    $match: {
        'cve_results': {
             "BusyBox 1.12.1" : "<value>"
        }
    }
})
© www.soinside.com 2019 - 2024. All rights reserved.