$和运算符在mongo中进行多个$ text搜索

时间:2016-07-25 10:49:49

标签: mongodb full-text-indexing

是否可以在mongo中使用$和运算符进行多个$ text索引搜索?

我在db的tp集合中有文档

> db.tp.find()
{ "_id" : ObjectId("...."), "name" : "tp", "dict" : { "item1" : "random", "item2" : "some" } }
{ "_id" : ObjectId("...."), "name" : "tp", "dict" : { "item3" : "rom", "item4" : "tttt" } }

然后我做

> db.tp.createIndex({ "$**": "text" })
> db.tp.find({ $and: [{$text : { $search: "random" } }, {$text : { $search: "redruth" } }]})

它失败了

Error: error: {
"waitedMS" : NumberLong(0),
"ok" : 0,
"errmsg" : "Too many text expressions",
"code" : 2
}

但文本索引搜索适用于单个搜索,因此无法使用$和运算符绑定多个文本搜索?顺便说一句,我使用通配符$**进行索引,因为我想搜索整个文档。

2 个答案:

答案 0 :(得分:2)

查询最多可以指定一个$ text表达式。参见:

https://docs.mongodb.com/manual/reference/operator/query/text/

答案 1 :(得分:1)

基于mongoDB文档,AND运算符可以通过组合引号和空格直接在搜索词中使用。例如,我们搜索“ssl证书”和“权限密钥”,因此查询应该如下:

> db.tp.find({'$text': {'$search': '"ssl certificate" "authority key"'}})