如何快速找到阵列中至少有一个元素的所有mongo文档

时间:2014-03-19 12:03:25

标签: mongodb

我有以下查询

db.runCommand(
    {"text":"item","search":"\"price\" ",
     "project":{"_id":1},
     "limit":1,
     "filter":{"quotes":{"$not":{"$size":0}}}} 
);

但过滤器部分需要很长时间。为了您的理解,"报价"是一个简单的嵌入文档数组。是否可以创建索引以快速查找至少具有一个引用的所有元素?

编辑: 更具体一点:问题不仅仅在于如何查询"但是"如何制作有用的索引"。

2 个答案:

答案 0 :(得分:2)

我认为更快的方法是:

db.collection.find({array: {$elemMatch: {$exists: true}}})

答案 1 :(得分:0)

$ not和$ nin等否定运算符通常执行速度较慢。您能否检查以下查询是否表现更好并满足您的需求?

db.collection.runCommand("text", {"search":"\"price\" ",
                                  "project":{"_id":1},
                                  "limit":1,
                                  "filter":{"quotes.0":{"$exists":true}}} 
);