mongoDB:删除对象数组中的空对象

mongoDB: remove empty objects in an object-array

本文关键字:对象 数组 删除 mongoDB      更新时间:2023-09-26

不幸的是,我在某些文档中的数组中得到了一些假对象,这些对象的结构如下:

{
    "_id" : "8vJY4baMbdYkgHian",
    "title" : "Cars",
    "tradename" : [
        {
        },
        {
            "element" : "Audi"
        },
        {
            "element" : "Mercedes"
        }
    ]
}

如本例所示,数组中的第一个对象为空。如何删除集合中所有文档的所有tradename数组中的空对象?

Collection.update(
    { 'tradename': {} },
    { $pull: { 'tradename.$': '' } }
);

一种从数组中删除空对象的替代方法,无需假设:

db.a.update(
    {"tradename": {}},
    { $pull: { 'tradename': {$in:[{}]} } },
    { "multi": true }
);

以下使用 $pull 的更新操作更新集合中的所有文档,以从数组tradename中删除空对象,前提是嵌入的文档仅具有 element 属性:

db.collection.update(
    { },
    { "$pull": { "tradename": { "element": { "$exists": false } } } },
    { "multi": true }
)