如何删除两个字段具有不同值的文档

时间:2017-09-06 08:22:25

标签: php mongodb

我正在使用MongoDB PHP库来操作mongodb数据。

docs:https://docs.mongodb.com/php-library/master/tutorial/crud/

我想删除两个字段具有不同值的记录,例如:

有一个集合:

    $collection = [
        ['_id' => 'xxx', 'name_from_card' => 'foo', 'name_from_passport' => 'fooo'],
        ['_id' => 'xxx', 'name_from_card' => 'bar', 'name_from_passport' => 'bar'],
        ['_id' => 'xxx', 'name_from_card' => 'baz', 'name_from_passport' => 'bazz'],
        ['_id' => 'xxx', 'name_from_card' => 'qux', 'name_from_passport' => 'qux']
    ];

如果记录中name_from_cardname_from_passport的值不同,我将删除此记录。在上面的示例中,记录13将被删除。

如何使用MongoDB PHP库?

1 个答案:

答案 0 :(得分:1)

使用$where。您需要JavaScript表达式来比较字段,在大多数语言实现中,这只是表示为字符串:

$collection->deleteMany([ '$where' => 'this.name_from_card !== this.name_from_passport' ])

deleteMany()方法适用于“所有”匹配的文档,而不仅仅是第一个匹配。