Mongodb从嵌套集合创建表

时间:2017-12-13 12:01:18

标签: mongodb

我使用的是MongoDb 3.4,我重新排列了400.000.000条记录。 我怎样才能改变这样的文件:

{
    "_id": ObjectId("5a29777dce2ac011041718e9"),
    "elements": [{
            "IdSensore": "14348",
            "Valore": -2.5,
            "idOperatore": "1"
        }, {
            "IdSensore": "14351",
            "Valore": 16,
            "idOperatore": "1"
        }, {
            "IdSensore": "14355",
            "Valore": 10,
            "idOperatore": "1"
        }, {
            "IdSensore": "14355",
            "Valore": 356,
            "idOperatore": "3"
        }
    ],
    "Data": "01/01/2013 00:10:00"
}

在一个表中,数据值在行中,而在多个字段中只有特定的IdSensore(某些为空),数学运算idOperatore:1? 这是导出到另一个集合的理想结果:

Data                    IdSensore:14348 IdSensore:14351 IdSensore:14355
01/01/2013 00:10:00         -2.5            16              10

换句话说,在每一行中,我都希望找到所有" Valore"指定" IdSensore"和" idOperatore:1"在这个样本中。

1 个答案:

答案 0 :(得分:0)

你需要做这样的事情:

 db.startCollection.find().forEach(
 function(item){
     var data1 = item.Data;
     var finishObject  = {};
     finishObject["Data"] = data1;
     item.elements.filter(function(item2){return item2.idOperatore==1})
     .forEach(
            function(item2){
                    finishObject["IdSensore:"+item2.IdSensore] = item2.Valore;
            }
     );
     db.finishCollection2.insert(finishObject);
 })