2016-11-27 12 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の両方のインデックスが作成されますか? 2つのインデックスを設定する必要はありますか?

ありがとうございます!

答えて

1

新しいインデックスを作成するときに、mongodbは、インデックス付きフィールドのドキュメントの配列を横切って自動的にMultikey indexに切り替わります。 これは、単純に:

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

はうまくいくはずです。

は、以下を参照してください。https://docs.mongodb.com/v3.2/core/index-multikey/

+0

感謝を!私は文書を調べましたが、それを逃してしまったに違いありません。 – Idan

関連する問題