我试图这样做
db.users.ensureIndex({"books.title":"text", "location":"2d"})
并且MongoDB拒绝使用此错误创建索引
{
"ok" : 0,
"errmsg" : "bad index key pattern { books.title: \"text\", location: \"2d\" }: Can't use more than one index plugin for a single index.",
"code" : 67
}
文本索引是否不能与复合索引中的2d索引一起使用?
如果是,那么处理基于第一个books.title
字段然后跟location
字段的查询的可能解决方法是什么?
谢谢
更新:
文字索引是必要的,因为我计划在不久的将来使用加权(http://docs.mongodb.org/manual/tutorial/control-results-of-text-search/),其中books.title
可能会books.title
,books.about
和books.keywords
关于查询,它将是这样的
db.users.find({"books.title": "eragon", location: { $near :[ 150 , 23 ]}})
这意味着,找到位置接近我的点的用户,他们的书名为“eragon”
答案 0 :(得分:0)
对于此类用例,可以使用$geoWithin代替$ near。 $ geoWithin可以不使用2d / 2dsphere索引。其他索引(文本索引)将用于根据文本搜索过滤结果,第二步$ geoWithin将根据位置过滤结果(无索引)。