我正在尝试在mongodb聚合查询中找到名为title
的字段的正则表达式的所有匹配项。我想通过$ project在计划字段中获得所有匹配项。
我已经研究过$ text运算符用于文本搜索,但这不是我想要的。
在个项目集合中的文档样本:
{
"_id": ObjectId("5ceb898f12a765d79aead953"),
"title": "This is the text of the title field"
},
{
"_id": ObjectId("5ce7dc269e03d7714c84aa43"),
"title": "Yet another sample for title field"
}
然后我运行以下查询:
db.getCollection('items').aggregate([
{
$match: {
title: /t./g
}
}
]);
上面的查询匹配两个文档,这是预期的行为。
但是,我想要以下输出:
{
"_id": ObjectId("5ceb898f12a765d79aead953"),
"title": "This is the text of the title field",
"generatedField": ["th", "te", "t ", "th", "ti", "tl"]
},
{
"_id": ObjectId("5ce7dc269e03d7714c84aa43"),
"title": "Yet another sample for title field",
"generatedField": ["t ", "th", "ti", "tl"]
}
我假设查询将如下所示。括号中的代码就是我想要的:
db.getCollection('items').aggregate([
{
$match: {
title: /t./g
}
},
{
$project: {
title: 1,
generatedField: (code to generate javascript equivalent of $title.match(/t./g))
}
}
]);
任何帮助将不胜感激。