【发布时间】:2017-06-12 11:03:33
【问题描述】:
我们有一个如下所示的 mongodb 文档,我们在 messageTopic、messageTopicQuestion 和答案字段上配置了文本索引,如果我使用文本字符串进行搜索,那么我希望结果中只有匹配的嵌入记录,而不是整个文档。
例如,在下面的文档中,如果我使用单词“private”进行搜索,那么结果应该只返回第一个嵌入文档,而不是两个记录。如何仅检索匹配的嵌入文档并排除不匹配的文档。
{
"_id": ObjectId("586e8efdde81e56032000084"),
"messageTopic": "My Private",
"messageText": [{
"messageTopicQuestion": "agent private",
"answer": "agent private",
"_id": ObjectId("586e8efdde81e56032000085"),
"keywords": ["private"]
}, {
"messageTopicQuestion": "Greetings Checking",
"answer": "Heloo I am good What about u",
"_id": ObjectId("586fc80ccced739407000f4e"),
"keywords": ["Hi-Good", "Heloo"]
}],
"__v": 3
}
我正在使用下面的脚本
db.getCollection('messagetemplates').aggregate([{
$match: {
$text: {$search: 'private'},
visible: 'PUB'
}
},{ $sort: { score: { $meta: "textScore" } } }])
感谢帮助。谢谢。
【问题讨论】:
标签: mongodb search full-text-search document