我只是想知道这是否可以在单个请求中完成?
给定
{
_id: 1,
foo: {
fred: {}, // <- I want to remove empty keys like this
barney: { bar: 1 } // <- But keep these keys
}
}
预期
{
_id: 1,
foo: {
barney: { bar: 1 }
}
}
我知道如何在多个请求中执行此操作,但我正在尝试更好地理解 MongoDB。
<小时/>注意。 fred
在 { $unset: { "fred.baz": 1 } }
等更新命令中变为空 >baz
是 fred
中的最后一个键。
也许可以将其连同其内容一起删除?但命令发送者不知道,目前除了baz
之外还有没有其他的键。
最佳答案
您可以搜索空的嵌入文档 ({ }
) 并对其进行 $unset
.. 这是 JS shell 中的示例:
db.mycoll.update(
{'foo.fred':{ }},
{ $unset: {'foo.fred':1} },
false, // upsert: no
true // multi: find all matches
)
关于Mongodb 匹配嵌套文档中的空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7597013/