PHP中collection.save()的等价物是啥?
Posted
技术标签:
【中文标题】PHP中collection.save()的等价物是啥?【英文标题】:What is the equivalent of collection.save() in PHP?PHP中collection.save()的等价物是什么? 【发布时间】:2021-11-29 00:15:06 【问题描述】:mongo shell 有db.collection.save() 命令,可用于替换现有文档。
php 中的等价物是什么?
【问题讨论】:
【参考方案1】:您正在 PHP MongoDB 库中查找 MongoDB\Collection::updateOne
。
但是,您需要将upsert
选项设置为true
,这将模拟db.collection.save()
的“如果存在则更新,如果不存在则创建”行为。
来自MongoDB's PHP Library Manual 的一些示例代码(很好的资源):
<?php
$collection = (new MongoDB\Client)->test->users;
$collection->drop();
$updateResult = $collection->updateOne(
['name' => 'Bob'],
['$set' => ['state' => 'ny']],
['upsert' => true]
);
printf("Matched %d document(s)\n", $updateResult->getMatchedCount());
printf("Modified %d document(s)\n", $updateResult->getModifiedCount());
printf("Upserted %d document(s)\n", $updateResult->getUpsertedCount());
$upsertedDocument = $collection->findOne([
'_id' => $updateResult->getUpsertedId(),
]);
var_dump($upsertedDocument);
输出:
Matched 0 document(s)
Modified 0 document(s)
Upserted 1 document(s)
object(MongoDB\Model\BSONDocument)#16 (1)
["storage":"ArrayObject":private]=>
array(3)
["_id"]=>
object(MongoDB\BSON\ObjectId)#15 (1)
["oid"]=>
string(24) "57509c4406d7241dad86e7c3"
["name"]=>
string(3) "Bob"
["state"]=>
string(2) "ny"
【讨论】:
以上是关于PHP中collection.save()的等价物是啥?的主要内容,如果未能解决你的问题,请参考以下文章
方法 Illuminate\Database\Eloquent\Collection::save 不存在
什么是 PHP 的 var_dump() 的 Python 等价物? [复制]
javascript中是不是有php echo/print等价物