我的mongodb系列看起来像这样
{
channelId: int,
channelName: string,
voteHistory: [
{
createdAt: date,
votes: ['old vote','old vote','old vote']
},
{
createdAt: date,
votes: ['old vote']
},
{
createdAt: date,
votes: []
}
]
}
...
voteHistory
按createdAt
(日期)升序排序。如果我想将对象推送到votes
中最后一个(最近的)对象中的voteHistory
数组,我将如何通过一个操作执行此操作?
结果应如下所示
{
channelId: int,
channelName: string,
voteHistory: [
{
createdAt: date,
votes: ['old vote','old vote','old vote']
},
{
createdAt: date,
votes: ['old vote']
},
{
createdAt: date,
votes: ['new vote!!']
}
]
}
答案 0 :(得分:0)
由于$ push和$ pull不能成为单一原子操作的一部分,我最简单的方法就是在2次操作中完成它
1 / findOne()
甚至更好findById()
2 /修改内存中的数组=>保存您的文档
你可以通过组合切片,长度和推送算子在一个单一的操作中完成它,但说实话,我不确定效率。