MongoDB嵌套数组清理缺失字段子对象问题求助
MongoDB嵌套数组清理问题:保留非目标键值对同时移除损坏子对象
需要清理MongoDB文档中的损坏子对象,现有解决方案适用于多数场景,但存在特殊情况:当_a._p层级除s外还有其他键值对(如示例中的h)时,这些非目标键值对会被误清理。
需求说明
移除_a._p.s.[a|c|d].t中缺少did、dst、den字段的对象,同时保留其他层级的非目标键值对。
示例文档
{ "_id": ObjectId("5c05984246a0201286d4b57a"), "f": "x", "_a": [ { "_onlineStore": {} }, { "_p": { "s": { "a": { "t": [ { "id": 1, "dateP": "20200-09-20", "did": "x", "dst": "y", "den": "z" }, { "id": 2, "dateP": "20200-09-20" } ] }, "c": { "t": [ { "id": 3, "dateP": "20300-09-22" }, { "id": 4, "dateP": "20300-09-23", "did": "x", "dst": "y", "den": "z" }, { "id": 5, "dateP": "20300-09-23" } ] } }, "h": "This is cleaned but it should not" } } ] }
预期结果
[ { "_id": ObjectId("5c05984246a0201286d4b57a"), "f": "x", "_a": [ { "_onlineStore": {} }, { "_p": { "s": { "a": { "t": [ { "id": 1, "dateP": "20200-09-20", "did": "x", "dst": "y", "den": "z" } ] }, "c": { "t": [ { "id": 4, "dateP": "20300-09-23", "did": "x", "dst": "y", "den": "z" } ] } }, "h": "This is cleaned but it should not" } } ] } ]
此前的解决方案无法覆盖该场景,请问是否有简便的MongoDB更新查询方案可以解决此问题?
内容的提问来源于stack exchange,提问作者R2D2
相关产品推荐
相关产品推荐

