Mongodb"不能规范化查询"错误

时间:2016-10-25 10:31:06

标签: javascript mongodb

目的

查找我的MongoDB查询有什么问题

背景

我有一个饮料系列,我在其中输入如下数据:

    db.smoothies.insert({
    name: "Orange Banana",
    ingredients: [], //list of ingredients
    preparation: "Mix everything and have fun!",
    Source: "Super Smoothies, p. 142"
})

我正在尝试按名称功能创建搜索,为了实现它,我根据文档创建了一个$text索引: https://docs.mongodb.com/manual/core/index-text/

所以我使用了以下内容:

db.smoothies.createIndex({name: 'text'})

现在,当我创建一个简单的find查询时,它会起作用:

db.smoothies.find({ $text: { $search: "Orange" } })

但是当我尝试定义区分大小写时,它失败了:

db.smoothies.find( { $text: { $search: "orange", $caseSensitive: true } } )

我收到以下错误:

error: {
        "$err" : "Can't canonicalize query: BadValue extra fields in $text",
        "code" : 17287
}

问题

我从文档中采用了这个例子,但我无法理解它失败的原因。有人可以帮我搞清楚吗?

1 个答案:

答案 0 :(得分:2)

至少要使用mongodb 3.2版才能使用此查询

查看文档索引的2.6文档:

https://docs.mongodb.com/v2.6/core/index-text/