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

Teks mongodb mencari beberapa bidang

Konsep "pencarian teks" di mongodb tidak berfungsi seperti itu. Alih-alih, konsepnya di sini adalah Anda mendefinisikan "bidang mutiple" di "indeks teks" Anda dan cukup cari istilahnya.

Katakanlah Anda memiliki "barang" seperti ini:

{ "_id" : ObjectId("55ba22294bde97b581332979"), "title" : "Hello there" },
{ "_id" : ObjectId("55ba22414bde97b58133297a"), "title" : "Hello world" },
{
    "_id" : ObjectId("55ba22594bde97b58133297b"),
    "title" : "Hello world",
    "suburb" : "melbourne"
}

Kemudian saya memutuskan untuk membuat indeks teks seperti ini:

db.junk.createIndex(
   { "title": "text", "suburb": "text" },
   { "weights": {  "title": 10 } }
)

Kemudian saya melakukan pencarian menggunakan $text :

db.junk.find(
   { "$text": { "$search": "Hello World Melbourne" } },
   { "score": { "$meta": "textScore" } }
).sort({ "score": { "$meta": "textScore" } })

Yang memberikan hasil:

{
    "_id" : ObjectId("55ba22594bde97b58133297b"),
    "title" : "Hello world",
    "suburb" : "melbourne",
    "score" : 11.5
},
{
    "_id" : ObjectId("55ba22414bde97b58133297a"),
    "title" : "Hello world",
    "score" : 1.5
},
{
    "_id" : ObjectId("55ba22294bde97b581332979"),
    "title" : "Hello there",
    "score" : 1
}

Yang mana "keduanya" menelusuri semua bidang yang ditentukan dalam indeks dan juga mempertimbangkan "bobot" tambahan seperti yang diberikan ke bidang "pinggiran kota" dalam hal ini untuk menjadikannya peringkat yang lebih populer.

Jadi Anda tidak menggunakan kondisi tambahan dalam istilah, Anda menempatkan "semua" istilah dalam string kueri teks "satu" untuk mencari di beberapa bidang.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mendapatkan array dari koleksi mongoDB?

  2. Pertanyaan Mongodb 2.4 2dsphere sangat lambat (menggunakan $geoIntersects)?

  3. Saat menggunakan rmongodb, tidak dapat melihat koleksi di mongoDB

  4. Koneksi AngularJS dengan MongoDB

  5. urutkan berdasarkan panjang string di Mongodb/pymongo