4.3.4 Collection.remove()

Collection.remove() 函数用于删除集合中的文档,类似于 SQL 数据库中的 DELETE 语句。它接受一个搜索条件字符串(SearchConditionStr)作为参数,用于指定要从集合中删除的文档(SearchConditionStr 的详细说明可以在 第 4.3.2 节 “Collection.find()” 中找到)。如果没有提供搜索条件字符串,或者提供了一个空字符串,则 remove() 会返回一个错误。如果传递的搜索条件字符串是任何不匹配任何文档但结果为真的表达式(例如,“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'
var myColl = db.getCollection('my_collection');

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

有关 add() 在 EBNF 中的语法,另请参见 CollectionRemoveFunction