Không thể tham chiếu trường regex được lưu trữ trong tài liệu trong toán tử regex bên trong biểu thức so khớp.
Vì vậy, nó không thể được thực hiện trong bên mongo với cấu trúc hiện tại.
$lookup
hoạt động tốt với điều kiện bình đẳng. Vì vậy, một giải pháp thay thế (tương tự như những gì Nic đã đề xuất) sẽ là cập nhật bộ sưu tập bài đăng của bạn để bao gồm một trường bổ sung được gọi là keywords
(mảng các giá trị từ khóa mà nó có thể được tìm kiếm) cho mỗi tiêu đề.
db.users.aggregate([
{$lookup: {
from: "posts",
localField: "userregex",
foreignField: "keywords",
as: "posts"
}
}
])
Truy vấn trên sẽ thực hiện một cái gì đó như thế này (hoạt động từ 3.4).
keywords: { $in: [ userregex.elem1, userregex.elem2, ... ] }.
Từ tài liệu
Có vẻ như các phiên bản trước đó (được thử nghiệm trên 3.2) sẽ chỉ khớp nếu mảng có cùng thứ tự, giá trị và độ dài của mảng giống nhau.
Đầu vào mẫu:
Người dùng
db.users.insertMany([
{
"name": "James",
"userregex": [
"another",
"here"
]
},
{
"name": "John",
"userregex": [
"another",
"string"
]
}
])
Bài đăng
db.posts.insertMany([
{
"title": "a string here",
"keyword": [
"here"
]
},
{
"title": "another string here",
"keywords": [
"another",
"here"
]
},
{
"title": "one string here",
"keywords": [
"string"
]
}
])
Đầu ra mẫu:
[
{
"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"
]
}
]
}
]