Mongodb匹配嵌套文档中的空对象

时间:2011-09-29 12:01:04

标签: mongodb

我只是想知道在单个请求中是否可以这样做?

鉴于

{
   _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 } } bazfred中的最后一个密钥。

也许可以用它的内容删除它?但是命令发送者不知道,除了baz之外还有其他任何密钥。

1 个答案:

答案 0 :(得分:10)

您可以搜索空的嵌入式文档({ })和$unset ..这是JS shell中的一个示例:

db.mycoll.update(
    {'foo.fred':{ }},
    { $unset: {'foo.fred':1} },
    false,  // upsert: no
    true    // multi: find all matches
)