mongodb php manager $ bulk несколько полей - PullRequest
0 голосов
/ 24 августа 2018

Мне нужно обновить некоторые поля в монго-документе.Проблема, с которой я сталкиваюсь, некоторые могут быть нулевыми или пустыми, поэтому их не должно быть в списке $ 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, он обрывается с указанной выше ошибкой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...