1

我对 MongoDB 和正则表达式非常陌生,所以请多多包涵。MongoDB 文档有一个使用正则表达式进行搜索的示例:

http://docs.mongodb.org/manual/reference/operators/#_S_regex

但是,它只显示了如何搜索预定键的值。我不确定如何编写查询来搜索集合中的所有值,如果有人能指出那会很棒。

4

1 回答 1

0

如果您不关心数据库的大小(或性能),您可能会使用mapReduce函数将数据反规范化为更易于搜索的结构。但是,这将显着增加数据库的大小,因为您将复制集合的所有数据。

伪代码:

// recursive
// building a full property path
for(var key in obj) {
    emit(this._id, { orig: obj[key], src: path + "." + key });
    // recursive call emitChildren(path, key)
}

根据数据的复杂性,它可能是合理的。

或者,您可以使用$where对所有文档的每个键/值执行正则表达式(因为您可以在使用 $where 时执行任意 JavaScript)。

如果您对集合中每个文档中的每个值运行正则表达式,则没有任何选项会表现良好(即使是内置选项)也不会发挥 mongoDB 的优势。

于 2013-01-01T22:27:47.167 回答