受另一个问题的启发,我正在寻找一种通用的方法,将带有索引的字段添加到嵌套数组中的每一项。
假设我的文档如下所示:
{
_id: ObjectId("5a934e000102030405000000"),
events: [
{
status: 0,
timestamp: ISODate("2022-05-29T13:26:00Z")
},
{
status: 8,
timestamp: ISODate("2022-05-29T14:41:00Z")
},
{
status: 4,
timestamp: ISODate("2022-05-31T10:13:00Z")
},
{
status: 3,
timestamp: ISODate("2022-05-31T10:18:00Z")
}
]
}
我希望每一项都包含一个新的字段,该字段是数组中该项的索引:
{
_id: ObjectId("5a934e000102030405000000"),
events: [
{
arrayIndex: 0,
status: 0,
timestamp: ISODate("2022-05-29T13:26:00Z")
},
{
arrayIndex: 1,
status: 8,
timestamp: ISODate("2022-05-29T14:41:00Z")
},
{
arrayIndex: 2,
status: 4,
timestamp: ISODate("2022-05-31T10:13:00Z")
},
{
arrayIndex: 3,
status: 3,
timestamp: ISODate("2022-05-31T10:18:00Z")
}
]
}
1条答案
按热度按时间30byixjq1#
从mongoDB版本3.4开始,这可以使用带有
$reduce
阶段的聚合管道来完成,它使用新累加数组的大小:了解它在playground example上的工作原理