MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDB C# Array indeks lub indeksowanie wewnętrznych elementów tablic

Nie możesz tego zrobić konkretnie, nie możesz indeksować wartości klucza.

Jedno rozwiązanie

Możesz jednak indeksować elementy w tablicy.

Załóżmy, że Twoje dane wyglądają tak:

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

Aby utworzyć indeks na items.Key, należy wykonać następujące czynności::

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

Gdy wykonasz następujące czynności, użyjesz indeksu:

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

Spowoduje to zawężenie wyszukiwania tylko do tych elementów, które mają Key = "City" . Jeśli to wszystko, to prawdopodobnie nie pomoże.

Alternatywne rozwiązanie

Dlaczego items tablica? Czy nie możesz uporządkować danych w ten sposób:

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

Teraz możesz indeksować items.City.Value , którego szukałeś w pierwszej kolejności. To również sprawia, że ​​struktura danych jest nieco mniejsza.

W zależności od charakteru danych możesz również spojrzeć na rozrzedzone indeksy aby pomóc kontrolować rozmiar indeksu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Czy db.stats() jest wywołaniem blokującym dla MongoDB?

  2. mongodb groupby powolny nawet po dodaniu indeksu

  3. Utwórz model mangusty na podstawie wyników zapytania szczupłego

  4. Mongo DB znajdź według nazwy pola z dowolną wartością

  5. Konflikt ReplicaSetId podczas dodawania węzła MongoDB