sql >> データベース >  >> NoSQL >> MongoDB

MongoDB C#配列インデックスまたは配列の内部アイテムのインデックス作成

    これを具体的に行うことはできません。キーの値にインデックスを付けることはできません。

    1つのソリューション

    ただし、配列内のアイテムにインデックスを付けることはできます。

    データが次のようになっていると仮定しましょう:

    items:
      [
           { Key: "Name", Value: "Peter", Type:String },
           { Key: "Age", Value: "18", Type:int },
           { Key: "City", Value: "San Jose", Type:String },
           ...30 to 40 items.
      ]
    

    items.Keyにインデックスを作成するには、次のようにします。 :

     db.foo.ensureIndex( { 'items.Key' } )
    

    次のことを行うときは、インデックスを使用します:

     db.foo.find( { 'items.Key' : "City", 'items.value' : "San Jose" } )
    

    これにより、Key = "City"を持つアイテムのみに検索が絞り込まれます。 。これがすべてである場合、これはおそらく役に立たないでしょう。

    代替ソリューション

    itemsはなぜですか 配列?このようにデータを構造化することはできません:

    items:
      {
           "Name" : { Value: "Peter", Type:String },
           "Age" : { Value: "18", Type:int },
           "City" : { Value: "San Jose", Type:String },
           ...30 to 40 items.
      }
    

    これで、items.City.Valueでインデックスを作成できます 、そもそもあなたが探していたものです。これにより、データ構造もかなり小さくなります。

    データの性質によっては、スパースインデックスも確認することをお勧めします。 インデックスのサイズを制御するのに役立ちます。



    1. マングーススキーマのネストされたオブジェクト

    2. エラーを取り除く方法:OverwriteModelError:コンパイル後に`undefined`モデルを上書きすることはできません。

    3. 変数への検索クエリで結果をマングースに返します

    4. spring sessionredis'「springSessionRepositoryFilter」という名前のBeanが定義されていません'