相关问题是Efficiently convert rows to columns in sql server。但答案是特定于 SQL 的。
我想要相同的结果,即在 MongoDB 中不聚合任何内容(截至目前)的情况下将行转为列。
该集合看起来如下所示。这些是 Facebook 页面属性的统计数据:
时间戳 | 道具名称 | 道具价值 -------------------------------- 1371798000000 | page_fans | 100 -------------------------------- 1371798000000 | page_posts | 50 -------------------------------- 1371798000000 | 页面故事 | 25 --------------------------------
我需要这样的答案:
时间戳 | page_fans | page_posts | page_stories -------------------------------- 1371798000000 | 100 | 50 | 25 --------------------------------
列名是预先确定的。它们不必动态生成。但问题是如何在 MongoDB 中实现这一点。
我相信聚合对这个目的没有用。我需要使用 MapReduce 吗?但在那种情况下,我猜我没有什么可以减少的?那么另一种选择可能是在代码中获取这些值并使用编程语言(例如Java)进行操作
任何见解都会有所帮助。提前致谢 :)!!!
编辑(基于 Schaliasos 的输入):
输入 JSON:
{
"_id" : ObjectId("51cd366644aeac654ecf8f75"),
"name" : "page_storytellers",
"pageId" : "512f993a44ae78b14a9adb85",
"timestamp" : NumberLong("1371798000000"),
"value" : NumberLong(30871),
"provider" : "Facebook"
}
{
"_id" : ObjectId("51cd366644aeac654ecf8f76"),
"name" : "page_fans",
"pageId" : "512f993a44ae78b14a9adb85",
"timestamp" : NumberLong("1371798000000"),
"value" : NumberLong(1291509),
"provider" : "Facebook"
}
{
"_id" : ObjectId("51cd366644aeac654ecf8f77"),
"name" : "page_fan_adds",
"pageId" : "512f993a44ae78b14a9adb85",
"timestamp" : NumberLong("1371798000000"),
"value" : NumberLong(2829),
"provider" : "Facebook"
}
预期输出 JSON:
{
"timestamp" : NumberLong("1371798000000"),
"provider" : "Facebook",
"page_storytellers" : NumberLong(30871),
"page_fans" : NumberLong("1371798000000"),
"page_fan_adds" : NumberLong("1371798000000")
}