Java 直接在mongoDB中更新地图
我在mongoDB中有一个集合,它的文档有3个字段,如下所示:Java 直接在mongoDB中更新地图,java,mongodb,map,updates,Java,Mongodb,Map,Updates,我在mongoDB中有一个集合,它的文档有3个字段,如下所示: { "_id" : { "$oid" : "5396ad5de4b09ea27a641ed6"} , "word" : "test_word" , "doc_occurrence" : "'total':25,'sport':10" , "total_occurrence" : "'total':32,'sport':15" } 我想知道我可以直接使用java(例如使用dot)更新密钥的值吗?
{
"_id" : { "$oid" : "5396ad5de4b09ea27a641ed6"} ,
"word" : "test_word" ,
"doc_occurrence" : "'total':25,'sport':10" ,
"total_occurrence" : "'total':32,'sport':15"
}
我想知道我可以直接使用java(例如使用dot)更新密钥的值吗?或者我必须完整地获取地图并以这种方式更新
如果我必须使用子文档通过点符号更新值,我必须使用什么类型的数据类型来保留子文档字段
p、 s:上面的集合结构是用java打印的。
mongo终端的采集结构如下:
{
"_id" : ObjectId("5396d751e4b0cabeab49be0b"),
"word" : "test_word",
"doc_occurrence" : { "total" : 25, "sport" : 10 },
"total_occurrence" : { "total" : 32, "sport" : 15 }
}
我想你在找我。此问题或多或少会处理您的问题:
我也不确定你的文件的结构。。。可能您在
doc\u事件
和total\u事件
中忘记了一些{}
,您可以通过以下方式更新单个字段:
BasicDBObject query = new BasicDBObject(
"_id", new ObjectId("5396ad5de4b09ea27a641ed6")
);
BasicDBObject update = new BasicDBObject(
"$set", new BasicDBObject("doc_occurance.total", 30)
);
table.update(query,update);
因此,它使用操作符和“点表示法”来标识和单独更新子文档中的元素。您可以在更新的操作员部分中指定所需的任意多个字段。您使用的是什么mongodb Java驱动程序?我使用mongo-Java-driver-2.10.1OK,该驱动程序似乎将JSON文档表示为s。您应该使用它的方法来构建/修改文档。实际上,insert方法需要一段时间。