我正在尝试构建一个自动完成组件,该组件在mongodb中搜索一些文档。我目前有这样的文本索引:
collection.createIndex({
nameFirst: 'text',
nameLast: 'text'
});
我正在这样搜索该索引:
docs = await collection.aggregate([
{
$match: {
$text: {
$search: term,
$caseSensitive: false
}
}
},
{
$project: {
playerID: 1,
name: { $concat: [ '$nameFirst', ' ', '$nameLast'] }
_id: 0
}
},
{
$sort: {
score: { $meta: 'textScore' }
}
}
]).limit( 25 ).toArray();
但是,MongoDB的行为似乎是采用搜索词并将该搜索词分别应用于每个字段。我尝试在搜索串联的两个字段的地方做些不同。
我在他们的文档中没有看到任何内容为为串联在一起的两个字段创建文本索引提供指导。我只看到用于单独添加字段的选项。这可能吗?似乎应该是...
注意,我正在使用aggregate
是因为我正在使用$lookup
来抓取其他一些在搜索结果中提供有用信息的文档。如果需要此帮助,我可以粘贴该代码。只是想让它看起来更容易。