如何通过导入文件删除MongoDB文档

发布于

从版本100.0.0开始,您可以根据导入的文件删除MongoDB中的文档。为此,请使用模式。mongoimport``delete

使用 mode 时,如果导入的文档与要导入到的集合中的现有文档具有相同的值,则将删除现有文档。delete``_id

如果需要,您还可以指定一个或多个字段(字段除外)作为匹配字段。_id

例

假设我们有一个名为 pets 的集合,其中包含以下文档:

db.pets.find()

结果:

{ “_id” : 1, “name” : “Wag”, “type” : “Dog”, “weight” : 20 } { “_id” : 2, “name” : “Bark”, “type” : “Dog”, “weight” : 10 } { “_id” : 3, “name” : “Meow”, “type” : “Cat”, “weight” : 7 } { “_id” : 4, “name” : “Scratch”, “type” : “Cat”, “weight” : 8 } { “_id” : 5, “name” : “Bruce”, “type” : “Bat”, “weight” : 3 }

我们有以下JSON文件,称为:pets.json

{"_id":1,“name”:“Wag”,“type”:“Dog”} {"_id":2,“name”:“Fluffy”,“type”:“Cat”,“weight”:10} {"_id":9,“name”:“Hop”,“type”:“Kangaroo”,“weight”:60}

以下命令使用模式导入 JSON 文件:delete

mongoimport --db=PetHotel --collection=pets --mode=delete --file=data/pets.json

运行此命令将删除集合中的任何匹配文档。

检查结果

现在让我们来看看这个系列。

db.pets.find()

结果:

{ “_id” : 3, “name” : “Meow”, “type” : “Cat”, “weight” : 7 } { “_id” : 4, “name” : “Scratch”, “type” : “Cat”, “weight” : 8 } { “_id” : 5, “name” : “Bruce”, “type” : “Bat”, “weight” : 3 }

我们可以看到前 2 个文档已被删除。它们已被删除,因为它们的值与现有文档中的值匹配。尽管其他细节不一定匹配(例如与文档 2)匹配。_id``_id

此外,我们导入的文件有一个文档为 9,但没有匹配的文档,因此没有删除该文档的任何内容。_id

更改更新插入字段

您可以使用该参数指定要匹配的字段以外的字段。将多个字段与此参数一起使用时,请将它们作为逗号分隔的列表传递。--upsertFields``_id

假设我们有另一个名为 JSON 文件,它看起来像这样:pets2.json

{ “name” : “Meow”, “type” : “Cat”, “weight” : 7 } { “name” : “Bubbles”, “type” : “Fish”, “weight” : 3 }

此文档不包括该字段,因此我们需要与唯一标识每个文档的其他字段进行匹配。在这种情况下,我们可以使用 and 字段。_id``name``type

因此,我们可以使用以下命令:mongoimport

mongoimport --db=PetHotel --collection=pets --mode=delete --upsertFields=name,type --file=data/pets2.json

现在让我们再次检查集合:

db.pets.find()

结果:

{ “_id” : 4, “name” : “Scratch”, “type” : “Cat”, “weight” : 8 } { “_id” : 5, “name” : “Bruce”, “type” : “Bat”, “weight” : 3 }

喵喵猫被删除了,因为该宠物存在于MongoDB集合和导入的文档中。

泡泡鱼没有匹配的文件,所以没有删除任何文件。

检查mongoimport

mongoimport是 MongoDB 数据库工具包的一部分。MongoDB数据库工具是一套用于使用MongoDB的命令行实用程序。

如果您不确定是否安装了MongoDB数据库工具/,请尝试在终端或命令提示符下运行以下命令进行检查:mongoimport

mongoimport --version

如果有,您应该会看到版本信息等。如果您没有它,您可以使用MongoDB网站上的安装说明将其安装到您的系统上。

在哪里运行命令?

不要忘记,您需要从系统的命令行(例如新的终端或命令提示符窗口)运行命令。mongoimport

不要从 shell 运行它们。mongo