我有一组代表消息的文件。每条消息都有多个字段,这些字段在消息之间变化。它们存储在子文档的“字段”数组中。
此数组中的每个元素都包含字段的标签和值。 某些字段可能包含长字符串列表(IP地址,URL等) - 每个字符串都显示在该字段中的新行中。列表可以长达数千行。 为此目的,每个元素还存储“类型” - 类型1表示标准文本,而类型2表示列表。当存在类型2字段时,子文档中的“值”是列表的数组。
它看起来像这样:
"fields" : [
{
"type" : 1,
"label" : "Observed on",
"value" : "01/09/2016"
},
{
"type" : 1,
"label" : "Indicator of",
"value" : "Malware"
},
{
"type" : 2,
"label" : "Relevant IP addresses",
"value" : [
"10.0.0.0",
"190.15.55.21",
"11.132.33.55",
"109.0.15.3"
]
}
我希望所有字段值都可以搜索和索引,无论这些值是在标准字符串中还是在“value”中的数组中。
在“fields.value”上设置标准索引是否会为类型1和类型2内容编制索引?我需要设置两个索引吗?
提前致谢!
答案 0 :(得分:1)
创建新索引时,mongodb
会在索引字段上的文档中偶然发现数组时自动切换到Multikey index
。
这意味着:
collection.createIndex( { "fields.value": 1 } )
应该可以正常工作。