MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Cara membuat indeks MongoDB MultiKey pada atribut item dalam array .NET Driver

Ini adalah contoh bagaimana melakukannya dengan C#

var indexDefinition = Builders<FooDocument>.IndexKeys.Combine(
    Builders<FooDocument>.IndexKeys.Ascending(f => f.Key1),
    Builders<FooDocument>.IndexKeys.Ascending(f => f.Key2));

await collection.Indexes.CreateOneAsync(indexDefinition); 

PERBARUI

Mengenai indeks di dalam array, yang paling dekat yang dapat saya temukan adalah menggunakan "-1" sebagai indeks saat Anda membuat kunci indeks. Seperti yang saya pahami dari kode sumber github adalah opsi yang valid dalam hal membangun kueri.

var indexDefinition = Builders<FooDocument>.IndexKeys.Combine(
    Builders<FooDocument>.IndexKeys.Ascending(f => f.Key1),
    Builders<FooDocument>.IndexKeys.Ascending(f => f.Key2[-1].Key));

await collection.Indexes.CreateOneAsync(indexDefinition); 

"-1" adalah konstanta hardcode di sisi driver mongodb C# yang berarti "$" (bukti ). Jadi kode ini akan mencoba membuat indeks:

{ "Key1": 1, "Key2.$.Key": 1 }

yang baik untuk menanyakan info dari basis data, tetapi tidak diizinkan (akan mengeluarkan pengecualian "Kunci indeks berisi nama bidang ilegal:nama bidang dimulai dengan '$'") untuk digunakan dalam indeks. Jadi saya berasumsi itu harus diubah di driver mongodb agar berfungsi. Sesuatu seperti "-2" berarti operator kosong. Dalam hal ini kita bisa menggunakan

var indexDefinition = Builders<FooDocument>.IndexKeys.Combine(
    Builders<FooDocument>.IndexKeys.Ascending(f => f.Key1),
    Builders<FooDocument>.IndexKeys.Ascending(f => f.Key2[-2].Key));

await collection.Indexes.CreateOneAsync(indexDefinition); 

yang akan menghasilkan indeks seperti:

{ "Key1": 1, "Key2.Key": 1 }

Jadi pada dasarnya menurut saya saat ini tidak mungkin untuk membuat indeks yang Anda inginkan dengan Linq murni tanpa mengubah driver mongo C#.

Jadi saya pikir satu-satunya pilihan Anda lakukan seperti ini, masih C# tetapi tanpa Linq

await collection.Indexes.CreateOneAsync(new BsonDocument {{"name", 1}, {"bars.key", 1}});


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. menyimpan upvotes/downvotes di mongodb

  2. Bagaimana Cara Menginstal MongoDB di Sistem Windows?

  3. Pelengkapan otomatis dengan java , Redis, Pencarian Elastis , Mongo

  4. Pencarian teks MongoDb dengan dukungan bahasa

  5. Memeriksa Koneksi ke MongoDB