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

Bagaimana cara menerapkan tag posting di Mongo?

Jika tag yang Anda gunakan dan siputnya masing-masing tidak mungkin berubah, saya pikir pendekatan kedua Anda adalah yang lebih baik. Namun saya akan menyarankan perubahan kecil - daripada menyimpan array [name, slug] , buat bidang eksplisit dengan membuat subdokumen tag seperti dalam contoh ini post dokumen:

{
    "_id" : ObjectId("4ee33229d8854784468cda7e"),
    "title" : "My Post",
    "content" : "This is a post with some tags",
    "tags" : [
        {
            "name" : "meta",
            "slug" : "34589734"
        },
        {
            "name" : "post",
            "slug" : "34asd97x"
        },
    ]
}

Anda kemudian dapat meminta posting dengan tag tertentu menggunakan notasi titik seperti ini:

db.test.find({ "tags.name" : "meta"})

Karena tags adalah sebuah array, mongo cukup pintar untuk mencocokkan kueri dengan elemen apa pun dari array daripada array secara keseluruhan, dan notasi titik memungkinkan Anda untuk mencocokkan dengan bidang tertentu.

Untuk menanyakan postingan tidak berisi tag tertentu, gunakan $ne :

db.test.find({ "tags.name" : { $ne : "fish" }})

Dan untuk menanyakan postingan yang berisi satu tag tetapi tidak yang lain, gunakan $and :

db.test.find({ $and : [{ "tags.name" : { $ne : "fish"}}, {"tags.name" : "meta"}]})

Semoga ini bisa membantu!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Array bersarang $pull query menggunakan driver C# MongoDB

  2. Memperbarui objek di dalam array dengan PyMongo

  3. Pencarian agregasi Mongo 3.6 dengan beberapa kondisi

  4. Kesalahan pembaruan dokumen luwak

  5. MongoDB - Mengapa indeks _id tidak membuat kesalahan pada entri duplikat?