Regex 在mongoDB中搜索索引数据的复杂性(Big-O)是多少?

Regex 在mongoDB中搜索索引数据的复杂性(Big-O)是多少?,regex,json,performance,mongodb,Regex,Json,Performance,Mongodb,这是一个设计问题。你能告诉我,如果我索引的关键字如下所示 obj = { name: "Apollo", text: "Some text about Apollo moon landings", tags: [ "moon", "apollo", "spaceflight" ] } 就像这样 db.articles.ensureIndex( { tags: 1 } ); 并经常查询如下 db.articles.findOne( { tags: "apollo" }

这是一个设计问题。你能告诉我,如果我索引的关键字如下所示

obj = {
    name: "Apollo",
    text: "Some text about Apollo moon landings",
    tags: [ "moon", "apollo", "spaceflight" ]
}
就像这样

db.articles.ensureIndex( { tags: 1 } );
并经常查询如下

db.articles.findOne( { tags: "apollo" } ).name
如果我插入了n个这样的文档,请告诉我该查询的性能

是O(1)吗


在这些数据上搜索正则表达式的性能如何?

这是一个B树索引,与几乎所有数据库一样,因此它有O(logn)查找时间


正则表达式搜索听起来像是需要进行完全表扫描或完全索引扫描,两者都是O(n)。如果表达式是前缀锚定的,它将只需要扫描一个范围,但我猜这仍然算作O(n)。

这是一个B树索引,就像在几乎所有数据库中一样,因此它有O(logn)查找时间


正则表达式搜索听起来像是需要进行完全表扫描或完全索引扫描,两者都是O(n)。如果表达式是前缀锚定的,它将只需要扫描一个范围,但我猜这仍然算作O(n)。

正如Thilo所提到的,MongoDB索引被实现为“B-树”索引,基本上,MongoDB中的索引在操作上与其他数据库系统中的索引类似。MongoDB中的索引有很好的概述

我建议您阅读并帮助您实现、管理和设计

为了帮助分析查询的性能并了解它们在做什么,可以在查询中附加explain()操作符。有关
explain()
以及如何解释其输出的更多信息,请参阅


MongoDB用于正则表达式。使用记录在案。除了PCRE库中的限制外,没有其他大小限制。与所有正则表达式一样,请记住构造糟糕的正则表达式的后果:)

正如Thilo所提到的,MongoDB索引被实现为“B树”索引,基本上,MongoDB中的索引在操作上与其他数据库系统中的索引相似。MongoDB中的索引有很好的概述

我建议您阅读并帮助您实现、管理和设计

为了帮助分析查询的性能并了解它们在做什么,可以在查询中附加explain()操作符。有关
explain()
以及如何解释其输出的更多信息,请参阅


MongoDB用于正则表达式。使用记录在案。除了PCRE库中的限制外,没有其他大小限制。与所有正则表达式一样,请记住构造糟糕的正则表达式的后果:)

nosql中是否可以接受n的大o?严肃的问题。我是新来做开发的。这取决于N有多大以及你们需要它以多快的速度返回。它当然不能很好地扩展到大型集合。nosql中是否可以接受大o of n?严肃的问题。我是新来做开发的。这取决于N有多大以及你们需要它以多快的速度返回。它当然不能很好地扩展到大型集合。