Det er ikke muligt at referere til det regex-felt, der er gemt i dokumentet, i regex-operatoren inde i match-udtryk.
Så det kan ikke gøres i mongo side med den nuværende struktur.
$lookup
fungerer godt med ligestilling. Så et alternativ (ligner hvad Nic foreslog) ville være at opdatere din postsamling til at inkludere et ekstra felt kaldet keywords
( række nøgleordsværdier , det kan søges på ) for hver titel.
db.users.aggregate([
{$lookup: {
from: "posts",
localField: "userregex",
foreignField: "keywords",
as: "posts"
}
}
])
Ovenstående forespørgsel vil gøre noget som dette (virker fra 3.4).
keywords: { $in: [ userregex.elem1, userregex.elem2, ... ] }.
Fra dokumenterne
Det ser ud til, at tidligere versioner (testet på 3.2) kun vil matche, hvis array har samme rækkefølge, værdier og længde af arrays er de samme.
Eksempelinput:
Brugere
db.users.insertMany([
{
"name": "James",
"userregex": [
"another",
"here"
]
},
{
"name": "John",
"userregex": [
"another",
"string"
]
}
])
Indlæg
db.posts.insertMany([
{
"title": "a string here",
"keyword": [
"here"
]
},
{
"title": "another string here",
"keywords": [
"another",
"here"
]
},
{
"title": "one string here",
"keywords": [
"string"
]
}
])
Eksempeloutput:
[
{
"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"
]
}
]
}
]