Yii2 MongoDB的UPSERT
问题描述:
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组件?由于
答
https://github.com/yiisoft/yii2-mongodb/blob/cfb60d5d6dedd80f2bb9ee1f13a3edb906d920ef/Session.php
这是UPSERT的在回购库中的唯一参考。看起来像writeSession()
自动设置upsert。 IIRC upsert尝试更新,如果失败,则插入。我不熟悉图书馆亲自尝试
$collection->update($data_array);
但说实话我只是吐泥包有关回购的操作。
答
您可以使用 “updateAll”
$options = ['upsert' => true]; YourMongodbModel::updateAll($attributes, $condition, $options);
是。那就是我需要的。最终版本是:$ collection-> update(['_ id'=> $ data ['_ id']],$ data,['upsert'=> true]);谢谢! –
Hazzah!很高兴我能帮上忙。 –