我正在尝试为mongo集合创建一个文本索引,以便能够进行文本搜索。
虽然文本搜索完全适用于使用文本搜索索引,但我无法搜索我在索引中添加的整数字段。
我正在使用mongo v3.0.7
以下是复制问题的步骤:
> <!-- added two dummy fields -->;
> db.test.insert({a: 1, b: "apple"});
WriteResult({ "nInserted" : 1 })
>
> db.test.insert({a: 2});
WriteResult({ "nInserted" : 1 })
>
>
> <!-- initially only default index exists -->;
> db.test.getIndexes();
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "3dphy_dev.test"
}
]
>
>
> <!-- created new text index -->;
> db.test.createIndex({"a": "text", "b": "text"});
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
>
>
> db.test.getIndexes();
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "3dphy_dev.test"
},
{
"v" : 1,
"key" : {
"_fts" : "text",
"_ftsx" : 1
},
"name" : "a_text_b_text",
"ns" : "3dphy_dev.test",
"weights" : {
"a" : 1,
"b" : 1
},
"default_language" : "english",
"language_override" : "language",
"textIndexVersion" : 2
}
]
>
>
> <!-- searching for text yields result -->;
> db.test.find({$text: {$search: "apple"}});
{ "_id" : ObjectId("56497f6f96621a852197891b"), "a" : 1, "b" : "apple"}
>
>
> <!-- integer search doesn't works -->;
> db.test.find({$text: {$search: "1"}});
> db.test.find({$text: {$search: "2"}});
最后两个搜索命令不会产生任何结果。
我正在尝试为我的搜索构建一个api端点,我可以搜索集合中的文本和整数数据。
Plz建议!
答案 0 :(得分:0)
第二次搜索不起作用,因为$search
的类型不是String
(在这种情况下为"1"
或"2"
)。你试试这个:
db.test.find({a:1});