首页 > 解决方案 > 我找不到我想要的 $search $text MongoDB

问题描述

我的json:

   {
  user_id: "131231",
  user_name: "John",
  boxes:[
    {
      box_name: "Box 1"
    },
    {
      box_name: "Box 2"
    }
  ]
}

我正在尝试使用此查询查找框 1:

db.users.find({$text: {$search: "Box"}})

但是 mongo 找不到任何东西user_name,尽管可以找到:

db.users.find({$text: {$search: "John"}})

我试过了createIndex。我是 MongoDB 的新手。感谢您的所有帮助...

标签: javascriptarraysnode.jsmongodb

解决方案


您的索引需要包含两个字段:

createIndex({ 'user_name' : 'text', 'boxes.box_name': 'text' })

IndexOptionsConflict知道因为在那个集合上你已经有一个text索引并且你不能有另一个。完成上述索引后,这两个应该可以工作:

db.users.find({$text: {$search: "John"}})
db.users.find({$text: {$search: "Box"}})

推荐阅读