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

Pilih catatan yang cocok dengan nilai concat dari dua bidang di mongodb

Anda hanya dapat melakukannya dengan kerangka kerja agregasi, bukan dengan pencarian biasa.

db.coll.aggregate({$project:{newField:{$concat:["$field1","$field2"]}}},
                  {$match:{newField:"value"}} 
);

Perhatikan bahwa ini tidak akan dapat menggunakan indeks apa pun, karena tidak ada dukungan untuk indeks pada nilai yang dihitung di MongoDB (belum).

Jika Anda memiliki indeks di field1 dan Anda tahu berapa banyak karakter yang Anda harapkan dari field1 untuk berkontribusi pada value Anda dapat meningkatkan kinerja agregasi ini seperti ini:

db.coll.aggregate({$match:{field1:/^val/}},
                  {$project:{newField:{$concat:["$field1","$field2"]}}},
                  {$match:{newField:"value"}} 
);

dimana val adalah bagian pertama dari string "nilai" (Anda tidak boleh membandingkan lebih banyak karakter daripada nilai terpendek yang mungkin dari field1 sekalipun.

EDIT pada versi 3.6 Anda dapat melakukan ini di find menggunakan $expr ekspresi:

db.coll.find({$expr:{$eq:["value", {$concat:["$field1", "$field2"]}]}})


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Panduan Pengembang untuk Kumpulan Replika MongoDB

  2. pagination array mongoDB

  3. C# MongoDB.Driver GetServer Hilang, Apa Sekarang?

  4. spring-data-mongo - parameter kueri opsional?

  5. Bagaimana cara mendapatkan kembali dokumen yang diperbarui dari metode findOneAndUpdate?