Код: Выделить всё
public function updateItem(string $colletionName, array $data): void{
$collection = $this->getClient()->selectCollection($this->database, $colletionName);
// $collection = $this->getClient()->newApp->users;
$replaceResults = $collection->replaceOne(
['name' => 'james'],
['name' => 'james update']
);
$updateResult = $collection->updateOne(
['name' => 'james'],
['$set' => ['name' => 'james update']]
);
$updateManyResult = $collection->updateMany(
['name' => 'james'],
['$set' => ['name' => 'james update']],
);
printf("Matched %d document(s)\n", $replaceResults->getMatchedCount());
printf("Modified %d document(s)\n
", $replaceResults->getModifiedCount());
printf("Matched %d document(s)\n", $updateResult->getMatchedCount());
printf("Modified %d document(s)\n
", $updateResult->getModifiedCount());
printf("Matched %d document(s)\n", $updateManyResult->getMatchedCount());
printf("Modified %d document(s)\n
", $updateManyResult->getModifiedCount());
}
$mongDbPhp = new MongoDBPhp;
$mongDbPhp->updateItem('users', ['name'=>'james update']); // ignore the data
[img]https://i.sstatic. net/CXHmgErk.png[/img]
Я попробовал все три метода "один за другим", и это тоже не сработало, попробовал фильтровать по другим полям и попробовал версию с комментариями из коллекции $ тоже, но ничего изменено.
Коллекция та же, что используется для всех других операций CRUD, и она работает нормально. Так что я считаю, что проблема не в этом.
Я printsf возвращаю 0 (ноль) в тестах на совпадения, возможно, я делаю что-то не так в фильтрах, но понятия не имею, так как следую официальной инструкции. docs.
Я следую этим руководствам с официального сайта mongodb:
- https://www.mongodb.com/pt-br/docs/php- ... e-document
- https: //www.mongodb.com/pt-br/docs/php-library/ ... rial/crud/
- https://www.mongodb.com/pt-br/docs/php- ... te/update/
Подробнее здесь: https://stackoverflow.com/questions/793 ... ot-working
Мобильная версия