如何清空MongoDB文档中指定对象的所有键值对
解决方案:仅清空MongoDB文档中的指定对象
要只清空Bob文档里的categories对象(注意原数据里的键是西里尔字母的сategories,如果是笔误请自行调整为英文categories),别用deleteOne(这会删掉整个文档),改用updateOne配合$set操作符就能实现,修改后的代码如下:
let users = [ { name: "Bob", сategories: { eat: "20$", entertainment: "100$", }, }, ]; mongoClient.connect(function (err, client) { if (err) return console.log(err); const db = client.db("expensesdb"); // 替换deleteOne为updateOne,通过$set清空目标对象 db.collection("users").updateOne( { name: "Bob" }, // 匹配name为Bob的文档 { $set: { сategories: {} } }, // 将сategories设为空对象 function (err, result) { console.log(result); client.close(); } ); });
关键说明:
updateOne:只会匹配符合条件的第一个文档并执行更新操作,不会删除整个文档$set:MongoDB的字段更新操作符,用来设置指定字段的新值,这里直接把目标对象设为空{},刚好满足需求
如果你的最终需求文档里的键是category(原文档写的是сategories,可能是笔误),只需要把$set里的键名改成category即可:
{ $set: { category: {} } }
内容的提问来源于stack exchange,提问作者userName
相关产品推荐
相关产品推荐

