2016-03-03 159 views
0

yiisoft/yii2-mongodb README告诉,我们可以插入数据,使用此代码的MongoDB:Yii2 MongoDB的UPSERT

$collection = Yii::$app->mongodb->getCollection('somecollection'); 
$collection->insert($data_array); 

但是,如果我们插入相同_id多次,我们会得到重复的异常。据我所知,在mongo中,你应该使用“upsert:true”来更新数据(如this book所述)。我如何写它,使用yii2-mongo组件?由于

回答

1

https://github.com/yiisoft/yii2-mongodb/blob/cfb60d5d6dedd80f2bb9ee1f13a3edb906d920ef/Session.php

这是UPSERT的在回购库中的唯一参考。看起来像writeSession()自动设置upsert。 IIRC upsert尝试更新,如果失败,则插入。我不熟悉图书馆亲自尝试

$collection->update($data_array);

但说实话我只是吐泥包有关回购的操作。

+0

是。那就是我需要的。最终版本是:$ collection-> update(['_ id'=> $ data ['_ id']],$ data,['upsert'=> true]);谢谢! –

+0

Hazzah!很高兴我能帮上忙。 –

1

您可以使用 “updateAll”

$options = ['upsert' => true]; YourMongodbModel::updateAll($attributes, $condition, $options);