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"
]
}
]
}
]