sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB C# Index pole nebo indexování vnitřních položek polí

Nemůžete to udělat konkrétně, nemůžete indexovat hodnotu klíče.

Jedno řešení

Můžete však indexovat položky v poli.

Předpokládejme, že vaše data vypadají takto:

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

Chcete-li vytvořit index na items.Key, postupujte takto :

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

Když uděláte následující, použijete index:

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

Tím se vyhledávání zúží pouze na položky, které mají Key = "City" . Pokud je toto vše, pak to pravděpodobně nepomůže.

Alternativní řešení

Proč je items pole? Nemůžete strukturovat data takto:

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

Nyní můžete indexovat na items.City.Value , což je to, co jste hledali na prvním místě. Díky tomu je také struktura dat o něco menší.

V závislosti na povaze vašich dat se můžete také podívat na řídké indexy pomoci řídit velikost vašeho indexu.



  1. Komunikace mezi aplikací a webovou stránkou v reálném čase

  2. Jak mohu přemluvit Spring Data, aby mi ukázal mongoův plán dotazů (a.k.a cursor.explain())

  3. Je v pořádku používat Mongo's Object ID jako svůj jedinečný identifikátor? Pokud ano, jak jej mohu převést na řetězec a vyhledat jej podle řetězce?

  4. mongodb, řazení podle geoBlízko a datum?