我有这样的mongodb文档示例
"data": {
"2023-02-01": {
"123": {
"price": 100,
},
"234": {
"price": 100,
},
},
"2023-02-02": {
"123": {
"price": 100,
},
"234": {
"price": 100,
},
},
"2023-02-03": {
"123": {
"price": 100,
},
"234": {
"price": 100,
},
},
}
我的系统上有MapID的列表,应该如下所示
ids = [123]
我想从文档中删除不在列表(id)中的密钥,从特定日期(today/“2023-02-02”)开始,日期始终更新,因此ID,我的预期结果是
"data": {
"2023-02-01": {
"123": {
"price": 100,
},
"234": {
"price": 100,
},
},
"2023-02-02": {
"123": {
"price": 100,
},
},
"2023-02-03": {
"123": {
"price": 100,
},
},
}
我可以在MongoDB聚合上实现吗?我使用的是pymongo
1条答案
按热度按时间wljmcqd81#
按照评论中的讨论,如果重构模式是一个选项,那么您可以通过非常简单的查询来实现您所需要的。
Mongo Playground
我提出的方案是:
你可以看到有几件事:
1.避免使用动态值作为字段名
1.将日期格式化为正确的日期对象
1.避免高度嵌套的数组/对象