我每天有一个关于每个仪表的文档。如果数据数组中没有整个文档,我该如何添加另一个子文档并创建整个文档?
可以使用upsert来实现这个目的吗?
如果文档已存在,则结果将是:
谢谢!
可以使用upsert来实现这个目的吗?
如果文档已存在,则结果将是:
谢谢!
db.meters.findOne()
{
"_id" : ObjectId("4f8e95a718bc9c7da1e6511a"),
"config" : {
"someparam" : 4.5
},
"data" : [
{
"Meter" : 123456789,
}
],
"key" : "20120418_123456789"
}
db.meters.update({"key" : "20120418_123456789"}, {"$addToSet": {"data" : {"Meter" : 1234}}})
我们得到了更新版本:
db.meters.findOne()
{
"_id" : ObjectId("4f8e95a718bc9c7da1e6511a"),
"config" : {
"someparam" : 4.5
},
"data" : [
{
"Meter" : 123456789,
},
{
"Meter" : 1234
}
],
"key" : "20120418_123456789"
}
再次运行相同的命令,结果不会改变。
注意:如果此字段无界限且频繁更新,可能会导致不断增加文档大小(相对昂贵),您应该在这里查看有关如何缓解此问题的想法:
http://www.mongodb.org/display/DOCS/Padding+Factor#PaddingFactor-ManualPadding