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

mongodb periksa regex pada bidang dari satu koleksi ke semua bidang di koleksi lain

Tidak mungkin untuk mereferensikan bidang regex yang disimpan dalam dokumen di operator regex di dalam ekspresi kecocokan.

Jadi tidak bisa dilakukan di sisi mongo dengan struktur saat ini.

$lookup bekerja dengan baik dengan kondisi kesetaraan. Jadi satu alternatif (mirip dengan apa yang disarankan Nic) adalah memperbarui koleksi posting Anda untuk memasukkan bidang tambahan yang disebut keywords ( larik nilai kata kunci yang dapat dicari ) untuk setiap judul.

db.users.aggregate([
   {$lookup: {
          from: "posts",
          localField: "userregex",
          foreignField: "keywords",
          as: "posts"
        }
    }
])

Kueri di atas akan melakukan sesuatu seperti ini (berfungsi dari 3.4).

keywords: { $in: [ userregex.elem1, userregex.elem2, ... ] }.

Dari dokumen

Sepertinya versi sebelumnya ( diuji pada 3.2 ) hanya akan cocok jika array memiliki urutan, nilai, dan panjang array yang sama.

Contoh Masukan:

Pengguna

db.users.insertMany([
  {
    "name": "James",
    "userregex": [
      "another",
      "here"
    ]
  },
  {
    "name": "John",
    "userregex": [
      "another",
      "string"
    ]
  }
])

Postingan

db.posts.insertMany([
  {
    "title": "a string here",
    "keyword": [
      "here"
    ]
  },
  {
    "title": "another string here",
    "keywords": [
      "another",
      "here"
    ]
  },
  {
    "title": "one string here",
    "keywords": [
      "string"
    ]
  }
])

Contoh Keluaran:

[
  {
    "name": "James",
    "userregex": [
      "another",
      "here"
    ],
    "posts": [
      {
        "title": "another string here",
        "keywords": [
          "another",
          "here"
        ]
      },
      {
        "title": "a string here",
        "keywords": [
          "here"
        ]
      }
    ]
  },
  {
    "name": "John",
    "userregex": [
      "another",
      "string"
    ],
    "posts": [
      {
        "title": "another string here",
        "keywords": [
          "another",
          "here"
        ]
      },
      {
        "title": "one string here",
        "keywords": [
          "string"
        ]
      }
    ]
  }
]


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Serializer koleksi kustom MongoDb

  2. Bagaimana cara kerja pengurutan dengan kueri `$or` dan `$in` di MongoDB?

  3. Cara menggunakan URL baru dari mongodb 3.6 untuk terhubung dari golang

  4. Bagaimana saya bisa menghasilkan ObjectId dengan luwak?

  5. Buat Indeks Wildcard di MongoDB