【发布时间】:2015-09-20 18:07:13
【问题描述】:
我将某种草率的 XML 数据导入 Mongo 数据库。每个文档都有嵌套的子文档,深度约为 5-10。我想 find() 具有特定字段特定值的文档,其中该字段可能出现在子文档中的任何深度(并且可能出现多次)。
我目前正在将每个文档拉入 Python,然后搜索该字典,但如果我可以声明一个过滤器原型,其中数据库将只返回在其内容中某处具有特定字段名称值的文档,那就太好了。
这是一个示例文档:
{
"foo": 1,
"bar": 2,
"find-this": "Yes!",
"stuff": {
"baz": 3,
"gobble": [
"wibble",
"wobble",
{
"all-fall-down": 4,
"find-this": "please find me"
}
],
"plugh": {
"plove": {
"find-this": "Here too!"
}
}
}
}
所以,我想查找具有“find-this”字段的文档,并且(如果可能)能够找到具有“find-this”字段的特定值的文档。
【问题讨论】:
-
神圣的服务器端脚本,蝙蝠侠!我不知道你可以在数据库中运行 JS!这真的很酷,您的解决方案非常有意义。非常感谢!
-
哦,你知道吗?我敢打赌,您可以使用“或”$where 子句执行 find():让数据库使用自己的(快速)机制查找“key-to-search”和“value-to-search”,以查找密钥所在的位置顶层,并提供递归搜索JS函数,用于“key-to-search”不在顶层的所有节点。如果我可以让它工作,我会把它添加到这个问题中。
标签: mongodb recursion mongodb-query