如何从集合中删除除MongoDB中的文档之外的所有文档

Ash*_*kGK 15 mongodb

有没有办法根据条件从集合中删除除一个文档之外的所有文档.

我使用的是MongoDB版本2.4.9

max*_*s ツ 39

你可以用以下方式做到这一点,

db.inventory.remove( { type : "food" } )
Run Code Online (Sandbox Code Playgroud)

上面的查询将删除类型等于"食物"的文档

要删除与您可以执行的条件不匹配的文档,

db.inventory.remove( { type : { $ne: "food" } } )
Run Code Online (Sandbox Code Playgroud)

要么

db.inventory.remove( { type : { $nin: ["Apple", "Mango"] } } )
Run Code Online (Sandbox Code Playgroud)

点击此处了解更多信息.


小智 5

要删除除一个文档外的所有文档,我们可以$nin在包含与我们要保留的文档相关的值的指定数组上使用查询运算符(不在其中)。

db.collections.remove({"field_name":{$nin:["valueX"]}})
Run Code Online (Sandbox Code Playgroud)

$nin数组的优点是我们可以使用它删除除一个或两个甚至许多其他文档以外的所有文档。

删除除两个文件外的所有文件:

db.collections.remove({"field_name":{$nin:["valueX", "valueY"]}})
Run Code Online (Sandbox Code Playgroud)

删除除三个文件外的所有文件:

db.collections.remove({"field_name":{$nin:["valueX", "valueY", "valueZ"]}})
Run Code Online (Sandbox Code Playgroud)