我有以下查询
db.runCommand(
{"text":"item","search":"\"price\" ",
"project":{"_id":1},
"limit":1,
"filter":{"quotes":{"$not":{"$size":0}}}}
);
但过滤器部分需要很长时间。为了您的理解,"报价"是一个简单的嵌入文档数组。是否可以创建索引以快速查找至少具有一个引用的所有元素?
编辑: 更具体一点:问题不仅仅在于如何查询"但是"如何制作有用的索引"。
答案 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}}}
);