我的文档如下:
{
_id: ...
checkins: [
{...}
{...}
{
...
activities: [
{...}
{...}
]
}
]
}
如果我想插入checkins
数组的第一个元素,我可以这样做:
mycol.updateOne(
{'_id': ...},
{'$push': {
'checkins.0.activities': entry}}
)
但是我需要将entry
插入checkins数组的最后一个索引,所以我该如何实现这样的东西?
mycol.updateOne(
{'_id': ...},
{'$push': {
'checkins.-1.activities': entry}}
)
编辑:
我不能只是做
'$set': {'checkins.-1': <entry>}
因为它会覆盖数组中的其他元素,所以:
'$set': {'checkins.-1': [...otherEntries, entry]}
这意味着每次都插入整个数组,并且由于它是一个很大的数组,所以太昂贵了
尽管如此,这看起来很有希望:
{
$each: [ entry ],
$position: -1
}
但这只是让我推入checkins
数组,如果我想向activities
子数组添加元素,则需要像第一个解决方案一样插入整个数组。在这种情况下,我正在寻找这样的东西:
{
$each: { '$push': {'activities': entry} },
$position: -1
}
但是当然不行,蒙哥抱怨
$ push中$ each的参数必须是一个数组,但类型为:对象
如何进入最后一个元素,即checkins.-1.activities
?