我找不到我想要的$ search $ text MongoDB

时间:2018-12-01 19:46:24

标签: javascript arrays node.js 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的新手。谢谢您的所有帮助...

1 个答案:

答案 0 :(得分:0)

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

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

您之所以会获得IndexOptionsConflict是因为在该集合上您已经有一个text索引,并且您不能再拥有一个。完成上述索引后,这两个应会起作用:

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