Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MongoDB存储随机数据_Java_Database_Spring_Mongodb_Dataset - Fatal编程技术网

Java MongoDB存储随机数据

Java MongoDB存储随机数据,java,database,spring,mongodb,dataset,Java,Database,Spring,Mongodb,Dataset,我被困在如何处理这个问题上 我有一个非常大的数据集,有大约百万条记录。每行包含一个人、他的/她的ID和他的/她的地址。但是一个人可能有多个地址,而且数据根本没有组织 从.csv文件读取数据时,我被迫在创建Person对象实例时对数据进行分块,因为数据集太大了。同时,我希望创建一个模式,使一个人记录包含ID和地址列表(我希望聚合与一个人对应的地址,并从中创建一个person对象)。最简单的方法是什么?我应该创建某种中间模式并尝试将其组合起来吗 我的方法如下: 导入集合中的所有csv块,比如说“t

我被困在如何处理这个问题上

我有一个非常大的数据集,有大约百万条记录。每行包含一个人、他的/她的ID和他的/她的地址。但是一个人可能有多个地址,而且数据根本没有组织


从.csv文件读取数据时,我被迫在创建Person对象实例时对数据进行分块,因为数据集太大了。同时,我希望创建一个模式,使一个人记录包含ID和地址列表(我希望聚合与一个人对应的地址,并从中创建一个person对象)。最简单的方法是什么?我应该创建某种中间模式并尝试将其组合起来吗

我的方法如下:

  • 导入集合中的所有csv块,比如说“temp”(是的,它将是临时的)
之后,您的shema应如下所示(取决于您的csv):

这将生成具有以下文档结构的集合(persons)(或覆盖它,如果它已经存在,请小心):

{_id : 001,   
addresses : [
    {street : "56 avenue des Champs Elysee",
    street2 :"",
    zip : "75000",
    city:"Paris",
    country:"France"},

    {street : "23 rue de la plage",
    street2 :"Residence du soleil",
    zip : "06000",
    city:"Nice",
    country:"France"}
    ]
    }
}
如果集合非常大,请在临时集合中的id字段上创建索引,这将提高聚合的性能

 db["temp"].aggregate([
 {$group:{
    _id:"$id",
    addresses : {$addToSet : "$address"}
    }
 },
 {$out : "persons"}
 ])
{_id : 001,   
addresses : [
    {street : "56 avenue des Champs Elysee",
    street2 :"",
    zip : "75000",
    city:"Paris",
    country:"France"},

    {street : "23 rue de la plage",
    street2 :"Residence du soleil",
    zip : "06000",
    city:"Nice",
    country:"France"}
    ]
    }
}