如何在mongodb文本索引搜索中仅检索匹配的嵌入文档

时间:2017-01-11 18:58:43

标签: mongodb mongodb-query

我有一个mongodb文档,如下所示,我在messageTopicmessageTopicQuestionanswer字段配置了文本索引, 如果我用任何字符串搜索,那么只有匹配的嵌入式记录才会出现在结果中而不是整个文档中。

例如,在下面的文档中,如果我使用word" 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" } } }])

期待低于结果。

{
        "_id": ObjectId("586e8efdde81e56032000084"),
        "messageTopic": "My Private",
        "messageText": [{
            "messageTopicQuestion": "agent private",
            "answer": "agent private",
            "_id": ObjectId("586e8efdde81e56032000085"),
            "keywords": ["private"]
        }],
        "__v": 3
    }

但是不匹配的嵌入式文档也会产生如下所示。

{
        "_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
    }

0 个答案:

没有答案