mongodb:如何在文本索引中搜索整数?

时间:2015-11-16 07:22:23

标签: mongodb

我正在尝试为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建议!

1 个答案:

答案 0 :(得分:0)

第二次搜索不起作用,因为$search的类型不是String(在这种情况下为"1""2")。你试试这个:

    db.test.find({a:1});