我对MongoDB和正则表达式都很陌生,所以请耐心等待。 MongoDB文档有一个使用正则表达式进行搜索的示例:
http://docs.mongodb.org/manual/reference/operators/#_S_regex
但是,它仅显示如何搜索预定键的值。 我不确定如何编写查询来搜索集合中的所有值,如果有人可以指出它会很棒。
答案 0 :(得分: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的优势。