mongodb - 推送到子数组的最后一个元素
问题描述
我的文档如下所示:
{
_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
}
但是当然它不起作用,mongo抱怨说
$push 中 $each 的参数必须是一个数组,但它的类型是:object
我如何推入最后一个元素,即进入checkins.-1.activities
?
解决方案
推荐阅读
- jquery - Jquery/Ajax 未正确发送序列化数据
- java - 如何将 ArrayList 从 Activity 发送到另一个?
- tfs - 在 TFS 2015 构建中找不到 SourceFolder
- firebase - 无法更改默认项目以在 Firebase 托管上部署我的项目
- javascript - 使用 react-native 仅禁用嵌套活动文本框中的发送按钮
- c# - 如何将 .NET C# 中的结构分配给 Matlab 中的 MWStructArray?
- java - 如何在java中将句子拆分为单词和标点符号
- java - Android:当屏幕以 MVVM 模式旋转时,UI 和数据无法生存
- javascript - 如何使用 v-if 切换元素与动态创建的模型?
- javascript - 如何调用 Export PDF with Reserved.ReportViewerWebControl.axd....来自后端 C# 代码的 URL