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

Mongoose:kueri nama lengkap dengan regex

Pisahkan istilah penelusuran menurut kata, dan pisahkan menggunakan operator alternatif ('|').

var terms = req.params.search.split(' ');

var regexString = "";

for (var i = 0; i < terms.length; i++)
{
    regexString += terms[i];
    if (i < terms.length - 1) regexString += '|';
}

var re = new RegExp(regexString, 'ig');

Untuk masukan 'John Smith' , ini akan membuat regex yang terlihat seperti /John|Smith/ig . Ini akan mengembalikan true untuk kata-kata individual serta berfungsi ketika inputnya hanya 'John Sm'

Anda dapat bermain-main dengan regex ini untuk mendapatkan satu lagi yang sesuai dengan kebutuhan Anda.

EDIT:

Masalahnya di sini adalah bahwa bidang nama Anda terpisah. Dalam hal ini, menerapkan regex yang sama ke kedua bidang tidak akan menghasilkan hasil yang Anda inginkan. Ekspresi reguler harus diterapkan ke bidang yang sama dengan nama lengkap.

Solusi yang mungkin adalah menggunakan agregasi:

User.aggregate()
    .project({fullName: {$concat: ['$firstName', ' ', '$lastName']}})
    .match({fullName: re})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Node tidak terhubung ke Mongo lebih dari sekali

  2. Apakah Meteor memiliki kueri yang berbeda untuk koleksi?

  3. Bagaimana cara memeriksa apakah $addToSet Mongo adalah duplikat atau tidak

  4. Meteor - Kesalahan MongoDB:Tidak dapat menerapkan pengubah $addToSet ke non-array

  5. Instance Mongo mana di Replica Set yang dipanggil oleh aplikasi?