如何在MongoDB中删除多个文档?

4

我有一个名为“users”的集合。在这个集合中,共有6个文档。我想使用其中一个名为“name”的列名删除3个文档。我使用了以下查询:

db.users.deleteMany([
{
"name":"viki"
},
{
"name" : "vino"
},
{
 "name" : "naranyamoorthy"
}
])

但我遇到了一个错误,有人可以帮我吗?

这些是我拥有的文档。我想删除三个名为viki、vino和naranyamoorthy的文档。

 { "_id" : ObjectId("58934f10c7592b1494fd9a4d"), "name" : "viki", "age" : 100, "subject" : [ "c", "node.js", "java" ], "address" : { "city" : "chennai", "state" : "tamilnadu", "pincode" : "123", "district" : [ "thambaram" ] } }
    { "_id" : ObjectId("58934f57e8796616482b48d1"), "name" : "vino", "age" : 21, "subject" : [ "Bootstrap", "j2ee", "java", null, "node" ], "address" : { "city" : "Antartica", "state" : "USA", "pincode" : "456", "country" : "USA", "core" : [ "alliswell" ] } }
    { "_id" : ObjectId("58934f8d09a2cb0d0c6f6af5"), "name" : "ranjith", "age" : 12, "subject" : [ "c++", "php", "java" ], "address" : { "city" : "japan", "state" : "UK", "pincode" : "45685" }, "subject[2]" : "php" }
    { "_id" : ObjectId("58955fd44b2ba9078463d2a7"), "name" : "waseem", "age" : 200, "subject" : [ "c++", "c", "Analysis" ], "address" : { "city" : "Dubai", "state" : "UAE", "pincode" : "5820", "country" : [ "USA" ] } }
    { "_id" : ObjectId("589561109b03d692c45114ef"), "name" : "sunadarpichai", "age" : 22, "subject" : [ "c", "node.js", "c++", "Android programming" ], "address" : { "city" : "losAngeles", "state" : "USA", "pincode" : "12341", "district" : "thambaram" } }
    { "_id" : ObjectId("58956389362992d7976510d4"), "name" : "naranyamoorthy", "age" : 21, "subject" : [ "Bootstrap", "node.js", "j2ee", "javascript" ], "address" : { "city" : "Afganistan", "state" : "tamilnadu", "pincode" : "9597653749", "country" : "USA", "core" : [ "alliswell" ] } }
3个回答

17
你需要向deleteMany传递一个单一的查询对象,该对象匹配您想要删除的文档。 在这种情况下,您可以使用$in
db.users.deleteMany({name: {$in: ["viki", "vino", "naranyamoorthy"]}})

0
const products = await Product.find({
  category: "food"
}, {
  _id: 1
});

const productsIdForDeleting = products.map(function(product) {
  return product._id
})
console.log(productsIdForDeleting)
/*[
  5e7130675b9281305485b0b9,
  5e7130675b9281305485b0bf,
  5e7130675b9281305485b0ba
]*/

const deleteProductsResponse = await Product.deleteMany({
  _id: {
    $in: productsIdForDeleting
  }
});

console.log(deleteProductsResponse)


)

0

迭代是删除文档的一种方式。

var deleteNames = ["viki","vino", "naranyamoorthy" ];
deleteNames.forEach(deleteDocument);
 function deleteDocument(item, index) {
  try {        
    db.collection.deleteMany({
        "name":item
    });  

  } catch (e) {
     print (e);
  }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接