【问题标题】:$text search with $or results in "No query solutions"使用 $or 进行 $text 搜索会导致“无查询解决方案”
【发布时间】:2018-06-17 04:29:12
【问题描述】:

Meteor 中的此服务器端查询返回“无查询解决方案”

$or: [
  {
   $text: {
    $search: searchValue,
    $caseSensitive: false,
    $diacriticSensitive: false
   }
  },
  {
    content: {$regex: re}
  } 
]

【问题讨论】:

  • 是的,我正在搜索相同的字段。使用 OrbiterCMSArticles._ensureIndex({title: "text", content: "text", subtitle: "text"}); 将内容索引为文本
  • 删除正则表达式部分或 $text 部分会发生什么?
  • 通过OrbiterCMSArticles.rawCollection().find(query)使用它是否有效?
  • 如果我删除 or 条件的任何一部分,它会起作用。

标签: mongodb meteor


【解决方案1】:

对我有用的是在您正在执行 $regex 搜索的所有字段上创建一个非文本索引。一个简单的升序或降序索引应该可以解决问题!

【讨论】:

    【解决方案2】:

    您必须创建文本索引来映射您想要搜索的每个元素。 示例:

    db.collection.createIndex({ element1: "text",
                                element2:'text' })
    

    "要在 $or 表达式中使用 $text 查询,$or 数组中的所有子句都必须被索引。"

    限制定义在$text behavior

    【讨论】:

    • 正如 cmets 中所说,并非如此。我正在搜索的字段已编入索引。不过谢谢你的回答。
    猜你喜欢
    • 2013-12-10
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-29
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多