就我而言,我在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"
}
}}
[如果可能的话,可能值得使用\u002e
而不是点插入文档,那样一来,您可以查询它们,同时保留任何客户端渲染的.
的ASCII值。
但是,似乎可以像这样查询它们:
(假设cve_results
是文档中的字段)
db.collection.aggregate({
$match: {
'cve_results': {
"BusyBox 1.12.1" : "<value>"
}
}
})