Я использую php sdk для удаления некоторых полей из базы данных firestore, я хочу удалить карту из массива внутри документа, но вместо этого использованная функция удаляет все карты внутри родительского массива.
MyБаза данных firestore выглядит следующим образом
Я пытаюсь удалить конкретный индекс ex: index 0 с его потомками из массива imageUrls, а не со всеми картами внутри него.
Я попробовал эти 2 функции:
$usersRef->update([
['path' => 'imageUrls.image_url', 'value' => FieldValue::arrayRemove(['image.png'])]
]);
и эту
$usersRef->update([
['path' => 'imageUrls.image_url', 'value' => FieldValue::deleteField()]
]);
Первая функция удаляет все дочерние элементы imageUrls и меняет тип imageUrls из массива на карту, в то время какВторой ничего не случилось. Все поля все еще существуют в документе, и удаление не произошло
<?php
namespace App\Services;
use Google\Cloud\Firestore\FirestoreClient;
use Google\Cloud\Firestore\FieldValue;
use Google\Cloud\Firestore\FieldPath;
class FirebaseService
{
public function delete()
{
// Create the Cloud Firestore client
$db = new FirestoreClient(
['projectId' => 'MyProjectId']
);
$usersRef = $db->collection('NewStories')->document('1');
$usersRef->update(
[
['path' =>'imageUrls.image_url',
'value' => FieldValue::arrayRemove(['image.png'])]
]);
}
}