我们要更新许多文档并为字段设置数组值[1,2,3]。
最后我们提出了这个解决方案:
$qb->updateMany()->field('targetGeo')->addToSet($qb->expr()->each([1,2,3]));
然而,生成的查询使mongo失败:
[MongoWriteConcernException] localhost:27017: The argument to $each in $addToSet must be an array but it was of type NumberLong64
调试查询给我们:
Array (
[type] => 5
[multiple] => 1
[query] => Array
(
)
[newObj] => Array
(
[$addToSet] => Array
(
[targetGeo] => Array
(
[$each] => 1
)
)
)
)
显然,这是 [$ each] => 1 ,这使它失败。
我们无法弄清楚这里出了什么问题。它是查询构建器中的错误还是我们没有以正确的方式使用它?
我们使用的是doctrine-mongodb 1.4和doctrine-odm 1.1.3
更新:我们设法让它在DocumentPersister.php中使用以下更改(请参阅为in_array测试添加'$ each'):