我有以下系列:
{
"_id" : ObjectId("57c73d28b61b482f5884a729"),
"complete" : true,
"han" : "12345-678",
"matchingHan" : "12345678",
"availabilities" : [
{
"size_a" : "45",
"size_b" : "10.5",
"size_c" : "11.5",
"available" : true,
"shop_id" : "1"
},
{
"size_a" : "46",
"size_b" : "11",
"size_c" : "12",
"available" : false,
"shop_id" : "1"
},
{
"size_a" : "45",
"size_b" : "10.5",
"size_c" : "11.5",
"available" : true,
"shop_id" : "2"
},
]
}
这是我的问题:
如何更新或插入可用性数组。如果有一个size_a = 45且shop_id为1的文档,我想更新可用状态。如果没有该文件,我想插入一份新文件。我找到了that解决方案并尝试了这个:
public void updateAvailabilities(Product product){
UpdateOptions options = new UpdateOptions();
options.upsert(true);
ArrayList<SizeInfos> tmpSizeInfos = product.getSizeRunAvailability();
for (int i = 0; i < tmpSizeInfos.size(); i++) {
Document updateSet = new Document();
updateSet.put("$addToSet", tmpSizeInfos.get(i));
Document availDoc = new Document();
availDoc.put("availabilities", updateSet);
prodCollection.updateOne(eq("matchingHan", helper.getMatchingHan(product.getHan())), availDoc, options);
}
}
但我总是得到这个例外:
java.lang.IllegalArgumentException: Invalid BSON field name availabilities