Мне нужно обновить некоторые поля в монго-документе.Проблема, с которой я сталкиваюсь, некоторые могут быть нулевыми или пустыми, поэтому их не должно быть в списке $ set.Итак, я строю объединенную строку из этих полей с допустимыми значениями и присваиваю ее переменной.
if ($value1 > '') {
$setFields = $setFields.", 'key1'".' => '.'$key1';
}
if ($value2 > '') {
$setFields = $setFields.", 'key2'".' => '.'$key2';
}
и т.д ...
$setFields = substr($setFields, 2);
$bulk->update(['id'=>$Id],['$set'=>[$setFields]);
и получаю ошибку: модификаторы работаютна полях, но мы нашли тип массив вместо.Например: {$ mod: {: ...}} не {$ set: ["'key1' => $ value1, 'key2' => $ value2"]}
ошибка очевидна:конструкция должна быть
{$set: [ 'key1' => $value1, 'key2' => $value2 ]}
, а не (php добавляет начальные и конечные двойные кавычки вокруг строки)
{$set: [ "'key1' => $value1, 'key2' => $value2" ]}
если я запускаю запрос, как это, он работает нормально:
$bulk->update(['id'=>$Id],['$set'=>['key1' => $value1, 'key2' => $value2]);
если подставить список полей в переменную $ setFields, он обрывается с указанной выше ошибкой