4.3.4 Collection.remove()

Collection.remove() 函数用于删除集合中的文档,类似于 SQL 数据库中的 DELETE 语句。它接受一个搜索条件字符串 (SearchConditionStr) 作为参数,用于指定要从集合中删除的文档(有关 SearchConditionStr 的详细说明,请参阅 第 4.3.2 节 “Collection.find()”)。如果没有提供搜索条件字符串,或者提供了一个空字符串,则 remove() 将返回错误。如果传递任何计算结果为 true 但不匹配任何文档的表达式(例如,“true” 或 “_id IS NOT NULL”)作为搜索条件字符串,则将删除集合中的所有文档。

可以将以下方法链接到 remove() 方法以配置删除操作:

  • limit(int):将要删除的文档数量限制为 int

  • sort(sortCriteriaList):根据 sortCriteriaList 对要删除的文档进行排序,sortCriteriaList 可以是用逗号分隔的列表或 sortCriteria 数组。每个 sortCriteria 由一个组件名称和一个搜索顺序(asc 表示升序,desc 表示降序)组成。例如:

    • sort('name asc', 'age desc')

    • sort(['name asc', 'age desc'])

    该方法通常与 limit() 方法结合使用,以确定要删除与搜索条件字符串匹配的哪些文档。

还支持使用 bind() 进行参数绑定,并且 execute() 函数会触发实际的删除操作。以下示例展示了如何使用 Collection.remove() 函数。它假设已经向集合中添加了一些文档,如 第 4.3.1 节 “Collection.add()” 中的代码示例所示。

# Use the collection 'my_collection'
myColl = db.get_collection('my_collection')

# Remove documents by criteria
myColl.remove('name like :name AND age < :age') \
  .limit(1).bind('name','N%').bind('age', 60).execute()

有关 EBNF 中 add() 语法的说明,另请参阅 CollectionRemoveFunction