简单但缓慢的mongodb查询

简单但缓慢的mongodb查询,mongodb,Mongodb,我想我错过了一些东西——我有一个大约2GB的集合,试图通过一个特定的值(以数字或字符串的形式出现)来查找文档 我收集了大约1.4万份文件 这是一个非常基本的查询: db.e_69.find({ "field_groups.fields_data" : { "$elemMatch": { "field_id": "502", "value": {"$in": ["223384",223384]} } }}) 我使用的是mongoD

我想我错过了一些东西——我有一个大约2GB的集合,试图通过一个特定的值(以数字或字符串的形式出现)来查找文档

我收集了大约1.4万份文件

这是一个非常基本的查询:

db.e_69.find({
    "field_groups.fields_data" : 
    {
    "$elemMatch": {
        "field_id": "502",
        "value": {"$in": ["223384",223384]}
    }
}})
我使用的是mongoDB 3.2,一个带有两个副本集的小型AWS服务器

我知道这不是太多的信息-但由于我是新的,我不知道什么信息是必需的,并将很高兴根据需要添加。对我来说很奇怪,这样一个来自14K个文档的查询需要3秒钟

我错过什么了吗?
谢谢

按数字排序的速度更快,但您有一个数组,因此它会降低查询速度,因为其中有两种类型

我建议添加一个简单的布尔列,在添加新文档时,如果文档有“223384”,223384,只需将这个布尔列设置为真值。 这样,您的查询将变得简单和快速。
我希望这能有所帮助。

谢谢YCotov,但我不确定我是否理解你的答案-我正在尝试读取数据,根据creteria检索信息。我将两者都用作数字和字符串的原因是,用户可以选择两者都使用…这就是为什么在文档上载期间实现附加逻辑会更好,它会检查您的文档是否具有这两个值,然后是否将boolen值设置为true,否则为false。但它可以是任何其他数字:)我只想按值查找文档-它可以是字段中的任何值…您是否尝试使用检查查询?如果查询运行缓慢,那么这应该是第一件要做的事情。