【发布时间】:2018-04-10 05:07:04
【问题描述】:
我得到了一个 JSON 字符串,看起来像这样:
String tmp = "[
{
"ID":"12",
"Date":"2018-02-02",
"ObjData":[
{
"Name":"AAA",
"Order":"12345",
"Extra1":{
"Temp":"3"
},
"Extra2":{
"Temp":"5"
}
},
{
"Name":"BBB",
"Order":"54321",
"Extra1":{
"Temp":"3"
},
"Extra2":{
"Temp":"5"
}
}
]
}
]"
例如,我想从“ObjData”中删除“Order”等于“54321”的文档。我得到以下代码:
Document doc = new Document();
doc = Document.parse(tmp);
Document fields = new Document("ID", "12")
.append("ObjData", Arrays.asList(new Document("Order", "54321")));
Document update = new Document("$pull", fields);
coll.updateOne(doc, update);
我正在尝试使用“pull”方法从“Order”等于 54321 的数组中删除整个文档,但由于某种原因它不起作用,我可能做错了什么。有人能指出问题吗?
此外,保持数组中文档计数的最佳方法是什么,以便在提取所有文档后从数据库中删除整个文档?添加某种“大小”属性并跟踪大小并在每次拉动后减小它会更好吗?
【问题讨论】:
标签: java arrays json mongodb bson