我需要搜索MongoDB中的特定字段。可能吗?

时间:2014-04-18 01:57:17

标签: mongodb full-text-search

我有一个多键索引,我只需要在其中一个索引中进行文本搜索。有可能吗?

1 个答案:

答案 0 :(得分:0)

如果您在2个字段上创建复合索引,请执行以下操作:

db.myCollection.ensureIndex({"field1":1,"field2":1})

您的索引将在两种情况下使用:

db.myCollection.find({"field1":"foo"})

db.myCollection.find({"field1":"foo","field2":"foo2"})

使用复合索引,仅使用定义的索引的第一个字段。如果你搜索它。

要检查您的索引是否已被使用,请在您的请求之后添加.explain(),如下所示:

db.myCollection.find({"field1":"foo"}).explain()
db.myCollection.find({"field1":"foo","field2":"foo2"}).explain()

你会得到像这样的json响应:

{
   "cursor" : "BtreeCursor field1_1_field2_1",
...
}

但如果您只在第二个字段上进行搜索,请执行以下操作:

db.myCollection.find({"field2":"foo"}).explain()

你会得到像这样的json响应:

{
"cursor" : "BasicCursor"
}

这意味着查询没有使用您的索引

所以,是的,你可以,但前提是查询是在复合索引中定义的第一个字段上

cordialy