我有一个JSON对象存储在这样的集合中:
[
{
"username":"j",
"pass":"t",
"tracking":
{
"bettercallsaul":["1x1","1x2","1x3"]
}
}
]
我想删除“跟踪”字段中的“bettercallsaul”字段。
我尝试过这样一条线:
collection.updateOne({ "username" : req.session.username }, { $unset : { "tracking" : { showname : 1 } } });
它只设法删除了整个跟踪条目,而不仅仅是更好的条目。是否可以删除此子字段?
编辑:忘记提及我的预期输出应该如何显示:
[
{
"username":"j",
"pass":"t",
"tracking": {}
}
]
答案 0 :(得分:1)
您可以使用$set
并设置空对象:
db.collection.updateOne({ "username" : req.session.username }, { $set : { "tracking" : { } } });
或者,您可以使用点表示法仅删除一个子字段:
db.collection.updateOne({ "username" : req.session.username }, { $unset : { "tracking.bettercallsaul" : 1 } });