这是一个基于的问题MongoDb - 删除所有为空的字段 https://stackoverflow.com/questions/25287204/mongodb-remove-all-fields-that-are-null。引用的帖子仅提供了删除顶层空字段的解决方案。但是,如何删除嵌入的空字段呢?
请注意我不知道空字段的可能名称及其深度,所以我认为我们必须迭代每个文档的每个字段。
这是一个例子:
{
"id": 14770467,
"f1": "a",
"f2": null,
"f3": [
{
"id": 76946819,
"f4": null
}
]
}
我期待这样的事情:
{
"id": 14770467,
"f1": "a",
"f3": [
{
"id": 76946819
}
]
}
Thanks.
尝试这个
const remove = (data) => {
for (let key in data) {
const val = data[key];
if (val == null) {
delete data[key];
} else if (Array.isArray(val)) {
val.forEach((v) => {
remove(v);
});
}
}
return data;
}
db.getCollection('Collection').find({}).forEach((data) => {
data = remove(data);
db.getCollection('OtherCollection').insert(data);
//db.getCollection('Collection').save(data); // update same record
print(data);
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)