在MongoDB中聚合异构文档



我正在编写一个工具来检查MongoDB会话存储,其中的结构是包含变量的名称空间,其中包含关于变量的信息,大致如下:

{
    "some namespace" : {
        "some variable" : {
            "t" : "serialization type",
            "b" : "data value",
            "c" : "java class type"
        },
        "some other variable in this namespace" : {
            "t" : "serialization type",
            "b" : "data value",
            "c" : "java class type"
        },
        ...
    },
    ... // more namespaces
}

名称空间和变量的名称都不同。我写了一个map reduce作业,在命名空间中循环,在每个命名空间中循环变量,并为每个命名空间中的每个变量发出。

然而,我想尝试切换到Mongo的聚合框架,以避免潜在的写锁定问题。根据文档,我似乎必须指定$group所在变量的名称,这似乎与我的异构数据不兼容。是否有任何方法可以在聚合调用中涉及迭代?

当前,要使用聚合框架,必须知道编写查询的字段名。有人提议取消这一限制。


现在,考虑到您的设计,要使用聚合框架,您可能必须定期使用map将数据合并为大致类似的内容:

{
    namespaces: [
      { name: "some namespace",
        variables: [
          { name: "some variable",
            t : "serialization type",
            b : "data value",
            c : "java class type"
          },
          { name: "some other variable in this namespace",
            t : "serialization type",
            b : "data value",
            c : "java class type"
          },
          ... // more variables
        ]
      },
      ... // more namespaces
    ]
}

现在,使用聚合框架进行查询将相对容易。承认你可能在处理陈旧的数据。。。

相关内容

  • 没有找到相关文章

最新更新