首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB文本搜索

MongoDB文本搜索
EN

Stack Overflow用户
提问于 2014-10-28 14:59:54
回答 1查看 285关注 0票数 1

我看到,我们可以使用本文中提到的方法限制在mongodb文本搜索中扫描的项目数:http://docs.mongodb.org/manual/tutorial/limit-number-of-items-scanned-for-text-search/

让我在这里写个简短的。我收集了一批库存文件:

代码语言:javascript
复制
{ _id: 1, dept: "tech", description: "lime green computer" }
{ _id: 2, dept: "tech", description: "wireless red mouse" }
{ _id: 3, dept: "kitchen", description: "green placemat" }
{ _id: 4, dept: "kitchen", description: "red peeler" }
{ _id: 5, dept: "food", description: "green apple" }
{ _id: 6, dept: "food", description: "red potato" }

然后我创建了一个索引:

代码语言:javascript
复制
db.inventory.ensureIndex(
   {
     dept: 1,
     description: "text"
   }
)

我可以编写这个查询,它可以工作:

代码语言:javascript
复制
db.inventory.find( { dept: "kitchen", $text: { $search: "green" } } )

现在,如果我使用这种方法,我可以在一个特定的部门搜索。我的问题是,我想要这个功能,但我也希望在所有部门的自由搜索。但是这个查询不起作用:db.inventory.find( { $text: { $search: "green" } } )

我使用的是2.6.5版本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-28 15:25:37

您创建的索引是一个复合索引,因此无法运行db.inventory.find( { $text: { $search: "green" } } )

如果想同时运行两者,可以将索引更改为

代码语言:javascript
复制
db.inventory.ensureIndex(
   {
     description: "text",
     dept: 1
   }
)

但是,对于第一个查询将进行更多的扫描。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26611564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档