【问题标题】:PHP \MongoDB\Driver\BulkWrite can't delete _id.$oid ObjectPHP \MongoDB\Driver\BulkWrite 无法删除 _id.$oid 对象
【发布时间】:2017-06-10 01:20:59
【问题描述】:

我有一个脚本删除 PHP7 \MongoDB\Driver 上的 Mongo 记录

$db = new \MongoDB\Driver\Manager(".......");
$bulk = new \MongoDB\Driver\BulkWrite;
$bulk->delete(["_id":"5887e6fda69ca3797f74a4fd"], ['limit' => 1]);
$writeConcern = new \MongoDB\Driver\WriteConcern(\MongoDB\Driver\WriteConcern::MAJORITY, 1000);
$result = $db->executeBulkWrite('theplace.here', $bulk, $writeConcern);

我也试过

...
$bulk->delete(["_id.$oid":"5887e6fda69ca3797f74a4fd"], ['limit' => 1]);
...

这适用于我发送的任何字段,它确实会删除......当我想删除 _id _id.$oid 时它不起作用,就像它忽略而不抛出错误一样。

非常感谢任何帮助。

【问题讨论】:

    标签: mongodb php-7


    【解决方案1】:

    在将 _id 与 ObjectId 值匹配时,您应该使用 MongoDB\BSON\ObjectID。由于字符串和 ObjectId 不能直接比较:

    $bulk->delete(
        ["_id"   => new MongoDB\BSON\ObjectID("5887e6fda69ca3797f74a4fd")],
        ['limit' => 1]
    );
    

    【讨论】:

    猜你喜欢
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2020-05-24
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多