MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB C# Индекс на масив или индексиране на вътрешни елементи на масиви

Не можете да направите това конкретно, не можете да индексирате стойността на ключа.

Едно решение

Можете обаче да индексирате елементи в масив.

Да приемем, че вашите данни изглеждат така:

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB формат за дата и час

  2. Mongodb получава последната комбинация в рамката за агрегиране

  3. MongoDB Ruby Driver 2.5.x Проблеми с чувствителността на малки и големи букви с имена на хостове в набори реплики

  4. Как мога да премахна това предупреждение за оттегляне в MongoDB и защо се случва?

  5. Скорост на MongoDB {aggregation $match} срещу {find}