如何在Doctrine MongoDB ODM中删除多个文档

dex*_*vip 6 mongodb doctrine-odm

如何在doctrine mongodb odm中删除多个文档?在PHP类中,我应该可以使用以下代码来完成它:

 $db->collection->remove(array("age" => 18));
Run Code Online (Sandbox Code Playgroud)

我怎么能在教义mongo odm中做到这一点?

jmi*_*ola 15

你有两个选择.使用DocumentManager,您可以请求给定类的集合.这实际上将返回一个Doctrine\MongoDB\Collection实例,它包装了基础MongoCollection以支持日志记录和事件.MongoCollection如果你真的想要它,底层是可用的:

$collection = $dm->getDocumentCollection('Documents\User');
$collection->remove(array('age' => 18));

// Use the raw MongoCollection to bypass logging and events
$mongoCollection = $collection->getMongoCollection();
$mongoCollection->remove(array('age' => 18));
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用查询构建器API:

$qb = $dm->createQueryBuilder('Documents\User');
$qb->remove()
    ->field('age')->equals(18)
    ->getQuery()
    ->execute();
Run Code Online (Sandbox Code Playgroud)

如果停止getQuery(),可以debug()在返回的查询对象上使用该方法,以查看Doctrine将对数据库执行的操作.