如何通过导入文件删除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