Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
Mongodb 条令odm批量插入-并非所有文档都保存_Mongodb_Doctrine Odm - Fatal编程技术网

Mongodb 条令odm批量插入-并非所有文档都保存

Mongodb 条令odm批量插入-并非所有文档都保存,mongodb,doctrine-odm,Mongodb,Doctrine Odm,我有一个67352行的文件。一行就是一个名字。我正在使用foreach将这些名称插入批处理中。在这67352条记录中,只有52262条记录在批处理大小为100时被持久化到数据库中。如果批大小越大,持久化的文档就越少,如果批大小越小,持久化的文档就越多,但我从未持久化所有文档 odm的版本是1.0.0beta3,我也用1.0.0rc1进行了尝试,得到了相同的结果 代码如下所示: $batchSize = 100; foreach ($data as $name) { $doc = new

我有一个67352行的文件。一行就是一个名字。我正在使用foreach将这些名称插入批处理中。在这67352条记录中,只有52262条记录在批处理大小为100时被持久化到数据库中。如果批大小越大,持久化的文档就越少,如果批大小越小,持久化的文档就越多,但我从未持久化所有文档

odm的版本是1.0.0beta3,我也用1.0.0rc1进行了尝试,得到了相同的结果

代码如下所示:

$batchSize = 100;
foreach ($data as $name)
{
    $doc = new \SomeDocument;
    $doc->setName($name);

    $dm->persist($doc);
    $i++;

    if ($i % $batchSize == 0)
    {
        $dm->flush();
        $dm->clear();
    }
}
$dm->flush();

谁能告诉我怎么了?谢谢你没有提到你在索引中使用了什么,但是我们假设它是默认的,并且你没有遇到唯一性问题(特别是因为你的结果是可变的)。听起来你的一些写作失败了

尝试使用以下命令运行批处理插入:

$dm->flush(array('safe'=>true));
它会稍微慢一点,但至少现在它应该在您看到失败时抛出一个异常,并且您可以从那里接受它