Delete Documents
Overview
在本指南中,您可以学习;了解如何使用 Laravel 集成从MongoDB集合中删除文档。使用删除操作从MongoDB 数据库中删除数据。
本部分举例说明了以下删除操作:
示例模型
本指南中的操作引用了以下 Eloquent 模型类:
namespace App\Models; use MongoDB\Laravel\Eloquent\Model; class Concert extends Model { protected $connection = 'mongodb'; protected $fillable = ['performer', 'venue', 'genres', 'ticketsSold', 'performanceDate']; protected $casts = ['performanceDate' => 'datetime']; }
删除一个文档
您可以通过以下方式删除一个文档:
对模型的实例调用
$model->delete()
方法。通过调用
delete()
方法来检索和删除模型实例的链式方法。对模型调用
Model::destroy($id)
方法,向其传递要删除的文档的_id
值。
删除() 方法
以下示例展示了如何通过对该模型的实例调用$model->delete()
来删除文档:
$concert = Concert::first(); $concert->delete();
当delete()
方法成功时,该操作将返回已删除的文档数。
如果调用的检索部分与集合中的任何文档都不匹配,则该操作将返回0
。
以下示例展示了如何链式调用以检索第一个匹配文档并将其删除:
Concert::where('venue', 'Carnegie Hall') ->limit(1) ->delete();
当delete()
方法成功时,它会返回已删除的文档数。
如果where()
方法未匹配任何文档, delete()
方法将返回0
。
destroy() 方法
以下示例演示如何通过将 _id
值传递给 Model::destroy($id)
方法来删除文档:
$id = 'MSG-0212252000'; Concert::destroy($id);
当destroy()
方法成功时,它会返回已删除的文档数。
如果 _id
值与任何文档都不匹配,destroy()
方法将返回 0
。
删除多个文档
您可以通过以下方式删除多个文档:
调用
Model::destroy($ids)
方法,传递要删除的文档或模型实例的 ID 列表。链式方法以检索引用多个对象的 Laravel 集合对象,并通过调用
delete()
方法删除它们。
destroy() 方法
以下示例展示了如何通过将由 $ids
表示的 _id
值大量传递给 destroy()
方法来删除文档:
$ids = [3, 5, 7, 9]; Concert::destroy($ids);
提示
传递大型列表时, destroy()
方法性能会受到影响。 为了获得更好的性能,请改用Model::whereIn('id', $ids)->delete()
。
当destroy()
方法成功时,它会返回已删除的文档数。
如果 _id
值与任何文档都不匹配,destroy()
方法将返回 0
。
删除() 方法
以下示例展示了如何链式调用以检索匹配的文档并将其删除:
Concert::where('ticketsSold', '>', 7500) ->delete();
当delete()
方法成功时,它会返回已删除的文档数。
如果where()
方法未匹配任何文档, delete()
方法将返回0
。
更多信息
要学习;了解Laravel 集成中提供的修改删除行为的 Laravel 功能,请参阅以下部分:
要查看演示如何使用 Laravel 集成删除文档的可运行代码示例,请参阅以下用法示例: