Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何快速查找数组中至少有一个元素的所有mongo文档_Mongodb - Fatal编程技术网

Mongodb 如何快速查找数组中至少有一个元素的所有mongo文档

Mongodb 如何快速查找数组中至少有一个元素的所有mongo文档,mongodb,Mongodb,我有以下疑问 db.runCommand( {"text":"item","search":"\"price\" ", "project":{"_id":1}, "limit":1, "filter":{"quotes":{"$not":{"$size":0}}}} ); 但是过滤器部分需要很长时间。根据您的理解,“引号”是一个简单的嵌入文档数组。是否可以创建一个索引来快速查找至少有一个引号的所有元素 编辑: 更具体地说:问题不仅在于“如何查询”,还在于

我有以下疑问

db.runCommand(
    {"text":"item","search":"\"price\" ",
     "project":{"_id":1},
     "limit":1,
     "filter":{"quotes":{"$not":{"$size":0}}}} 
);
但是过滤器部分需要很长时间。根据您的理解,“引号”是一个简单的嵌入文档数组。是否可以创建一个索引来快速查找至少有一个引号的所有元素

编辑:
更具体地说:问题不仅在于“如何查询”,还在于“如何制作有用的索引”。

像$not和$nin这样的否定运算符通常执行得较慢。您能否检查以下查询是否执行得更好并满足您的需要

db.collection.runCommand(“text”,{“search”:“\“price\”,
“项目”:{“_id”:1},
"限额":一,,
“筛选器”:{“quotes.0”:{“$exists”:true}
);

我认为更快的方法是:

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

不,很遗憾,没有,仍然运行9.67秒,这与运行db.collection.find({“quotes”:{“$size”:{“$gt”:0}}})时的性能几乎相同,只是为了检查是否是筛选条件让您慢下来?另外,您是否可以确认您是否正在对一个集合(即,
db.collection.runCommand()
而不是
db.runCommand
)运行此命令?您是对的,只是find查询非常快,而只是文本搜索本身(没有过滤器)也非常快。嗯…$size不是这样工作的,您想测试一下filter.0的位置$exists@Sammaye非常感谢。你说得对,$size不起作用。我已经用你的建议更新了我的帖子。在任何当前的产品版本中,文本搜索实际上仍然是一个非常好的“alpha”阶段。文档中还有一个很大的警告,不要在生产中使用它。如果你有真正的文本搜索需要超出基本的,然后使用适当的文本搜索引擎。它的性能更好,功能更多。可能重复检查此处标记的重复问题:在第二个答案中,它提供了一个好方法是的,但我的问题不是“如何查询”,而是“如何索引”