Очень упрощенная версия моего варианта использования — найти все сообщения, начинающиеся с имени автора, примерно так:
> db.users.find();
{ "_id" : ObjectId("5c4185be19da7e815cb18f59"), "name" : "User1" }
{ "_id" : ObjectId("5c4185be19da7e815cb18f5a"), "name" : "User2" }
db.posts.insert([
{author : ObjectId("5c4185be19da7e815cb18f59"), text: "User1 is my name"},
{author : ObjectId("5c4185be19da7e815cb18f5a"), text: "My name is User2, but this post doesn't start with it"}
]);
Поэтому я хочу идентифицировать все сообщения, которые начинаются с имени автора. Я пытаюсь использовать такой агрегат, но не знаю, как извлечь имя пользователя из агрегатного конвейера для использования в совпадении с регулярным выражением:
db.users.aggregate([
{
$lookup: {
from: "posts",
localField: "_id",
foreignField: "author",
as: "post"
}
},
{
$match: { "post.text": { $regex: "^" + name}}
}
]).pretty();
Вещь «имя» здесь не является чем-то определенным, мне нужно извлечь имя из записи коллекции пользователей из предыдущего шага конвейера. Я почему-то не понимаю, как это сделать.
Это, вероятно, очень просто, и я определенно чувствую себя здесь толстым, как кирпич ... Любая помощь высоко ценится!