Yii2 mongodb upsert

时间:2016-03-03 13:56:20

标签: php mongodb yii2

yiisoft/yii2-mongodb README告诉我们,我们可以使用以下代码将数据插入mongodb:

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

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

2 个答案:

答案 0 :(得分:1)

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

这是repo库中upsert的唯一引用。看起来writeSession()会自动设置upsert。 IIRC upsert尝试更新,如果失败则插入INSERT。我不熟悉图书馆亲自尝试

$collection->update($data_array);

但老实说,我只是对回购的操作嗤之以鼻。

答案 1 :(得分:1)

您可以使用" updateAll"

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