我只是想知道在单个请求中是否可以这样做?
鉴于
{
_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
之外还有其他任何密钥。
答案 0 :(得分:10)
您可以搜索空的嵌入式文档({ }
)和$unset
..这是JS shell中的一个示例:
db.mycoll.update(
{'foo.fred':{ }},
{ $unset: {'foo.fred':1} },
false, // upsert: no
true // multi: find all matches
)