我需要更新mongo文档中的某些字段。我面临的问题,有些可能为null或为空,因此不应将它们放在$ set列表中。因此,我使用有效值构建了这些字段的连接字符串,并将其分配给变量。
tomcat
等...
return state.selectedItemId === null ? null : Object.assign({}, state.items.find(item => item.id === state.selectedItemId))
,我得到一个错误:修饰符对字段进行操作,但我们发现类型为array。例如:{$ mod:{:...}}不是{$ set:[“'key1'=> $ value1,'key2'=> $ value2”]}
错误很明显:构造应该是
if ($value1 > '') {
$setFields = $setFields.", 'key1'".' => '.'$key1';
}
if ($value2 > '') {
$setFields = $setFields.", 'key2'".' => '.'$key2';
}
而不是(php在字符串周围添加了开头和结尾的双引号)
$setFields = substr($setFields, 2);
$bulk->update(['id'=>$Id],['$set'=>[$setFields]);
如果我像这样运行查询,它将正常工作:
{$set: [ 'key1' => $value1, 'key2' => $value2 ]}
如果将字段列表替换为$ setFields变量,则会因上述错误而中断