2016-11-27 27 views
1

我擁有一組代表消息的文檔。每條消息都有多個從消息到消息的字段。它們存儲在子文檔的「字段」數組中。Mongodb:可以是文本或數組的子文檔的索引字段

此數組中的每個元素都包含字段的標籤和值。 某些字段可能包含很長的字符串列表(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" 
    ] 
} 

]

我想所有字段的值是可搜索和索引,這些值是否在標準字符串或內「價值」的數組。

會在「fields.value」索引中設置類型1和類型2內容的標準索引嗎?我是否需要設置兩個索引?

在此先感謝!

回答

1

創建新索引時,mongodb將自動切換到Multikey index,如果它在索引字段上的文檔中發生數組竄改。 這意味着,只需:

collection.createIndex({ "fields.value": 1 }) 

應該工作得很好。

參見:https://docs.mongodb.com/v3.2/core/index-multikey/

+0

謝謝!我查看了文檔,但一定錯過了它。 – Idan

相關問題