Não é possível fazer referência ao campo regex armazenado no documento no operador regex dentro da expressão de correspondência.
Portanto, não pode ser feito no lado do mongo com a estrutura atual.
$lookup
funciona bem com condição de igualdade. Portanto, uma alternativa (semelhante ao que Nic sugeriu) seria atualizar sua coleção de postagens para incluir um campo extra chamado keywords
( array de valores de palavras-chave em que pode ser pesquisado ) para cada título. db.users.aggregate([
{$lookup: {
from: "posts",
localField: "userregex",
foreignField: "keywords",
as: "posts"
}
}
])
A consulta acima fará algo assim (funciona a partir de 3.4).
keywords: { $in: [ userregex.elem1, userregex.elem2, ... ] }.
Dos documentos
Parece que as versões anteriores (testadas em 3.2) só corresponderão se a matriz tiver a mesma ordem, os valores e o comprimento das matrizes forem os mesmos.
Entrada de amostra:
Usuários
db.users.insertMany([
{
"name": "James",
"userregex": [
"another",
"here"
]
},
{
"name": "John",
"userregex": [
"another",
"string"
]
}
])
Postagens
db.posts.insertMany([
{
"title": "a string here",
"keyword": [
"here"
]
},
{
"title": "another string here",
"keywords": [
"another",
"here"
]
},
{
"title": "one string here",
"keywords": [
"string"
]
}
])
Saída de amostra:
[
{
"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"
]
}
]
}
]