【问题标题】:doctrine mongodb. can not set array value to a field学说mongodb。无法将数组值设置为字段
【发布时间】:2017-03-28 15:13:35
【问题描述】:

我们想要更新许多文档并为一个字段设置一个数组值 [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 让它失败了。

我们无法弄清楚这里出了什么问题。这是查询生成器中的错误还是我们没有正确使用它?

我们正在使用教义-mongodb 1.4 和教义-odm 1.1.3

更新:我们已经设法让它与 DocumentPersister.php 中的以下更改一起工作(请参阅为 in_array 测试添加的“$each”):

【问题讨论】:

  • 你的 php 版本是多少?你可以试试array(1,2,3) 吗?
  • PHP 5.6.30,切换到 array(1,2,3) 没有区别
  • 请看我的更新。我们找到了一个可以让它工作的补丁。

标签: mongodb doctrine


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-23
    • 2014-09-01
    相关资源
    最近更新 更多