MongoDB:将数组元素转换为字段



我是MongoDB 2.6.0,我有这样的文档集合:

{ "mid" : 1021, 
  "day" : 298,
  "data":[
  {"ts" : 1,"kwh" : 0.017},
  {"ts" : 2,"kwh" : 0.018},
  {"ts" : 3,"kwh" : 0.019},
  ... ] }

我想把数组元素平铺成单独的字段,像这样:

{ "mid" : 1021, 
  "day" : 298,
  "ts1" : 0.017,
  "ts2" : 0.018,
  "ts3" : 0.019,
  ...
}

这看起来应该是可能的聚合框架,但我真的不知道如何根据"ts"的值重新投影数据数组的"kwh"元素。

有人知道怎么做吗?

谢谢你的帮助!

更多的mapReduce任务:

db.collection.mapReduce(
    function () {
      var copy = this;
      var tdata = copy.data;
      delete copy.data;
      tdata.forEach(function(data) {
        var key = "ts" + data.ts;
        copy[key] = data.kwh;
      });
      var id = copy._id;
      delete copy["_id"];
      emit( id, copy );
    },
    function(){},
    { "out": { "inline": 1 } }
)

目前还不能使用聚合框架灵活地指定"key"的值。为了得到想要的输出,您必须通过投影显式地命名每个键。

MapReduce并没有给出与你想要的完全相同的输出。但这是在不显式命名键的情况下最接近的。

相关内容

  • 没有找到相关文章

最新更新