我处理存储在一个集合中的上传数据。数据包含有关上传日期的信息(以整数值表示),因此我想在集合中创建一个对象,该对象包含所有上载数据的日子。每次上传时,必须更新此目标对象,以防数据在新的一天记录下来。如果同一天已经有可用数据,则不必更新对象。 该对象将构建以下内容:
{
"Content" : "UploadDates",
"value" : [123,456]
}
,并且值JSONArray应该更新。 有没有比while对象更优雅的方法,将date数组与新日期合并,然后再次插入整个对象?
编辑:我在Java / Spring 2.1.4版本和mongodb驱动程序3.8.2中实现
答案 0 :(得分:0)
您可以使用$push更新操作将新值推入数组。
例如在mongo
shell中:
> db.test.find()
{
"_id": 0,
"value": [
123,
456
]
}
使用$push
更新文档:
> db.test.update({_id: 0}, {$push: {value: 789}})
WriteResult({
"nMatched": 1,
"nUpserted": 0,
"nModified": 1
})
新值添加到数组的尾端:
> db.test.find()
{
"_id": 0,
"value": [
123,
456,
789
]
}
如果数组字段不存在,则$push
将创建该字段。