1

我在 MongoDB 中有一个集合,其中每个文档都包含titlecolor. title我想使用密钥执行全文搜索。为此,我正在使用以下代码:

mycol.create_index([('title', 'text')])
mycol.find({"colors" : color, "$text": {"$search": search_text}}).limit(10)

现在,我想使用以下规范进行查询:

{
    'color' : 'blue',
    '$text' : {
         "$search" : "V Neck"
     }
}

此查询返回“Neck”作为搜索文本匹配但“V”未出现在结果中的结果。

执行上述查询的结果:

1. Maniac Men's Fullsleeve Round Neck Round Neck All Over Printed Navy Cotton Tshirt
2. Off White Printed Round Neck Tshirt
3. Blue Striped Round Neck Tshirt
4. Grey Printed Round Neck Tshirt
5. Blue Solid Round Neck Tshirt
6. Blue Solid Round Neck Tshirt
7. Red Printed Round Neck Tshirt
8. Blue Printed Round Neck Tshirt
9. Blue Checked Round Neck Tshirt
10. Grey Printed Round Neck Tshirt

有什么方法可以得到与整个关键字“V 领”相匹配的结果?

4

1 回答 1

1

您需要$search用双引号括起来:

"$search" : "\"V Neck\""

此处记录了搜索确切的短语:

您还可以通过将它们括在双引号中来搜索确切的短语。如果 $search 字符串包含短语和单个术语,则文本搜索将仅匹配包含该短语的文档。

例如,以下将查找所有包含“咖啡店”的文档:

db.stores.find( { $text: { $search: "\"coffee shop\"" } } )
于 2019-05-25T18:40:32.257 回答