我們正在使用Java服務器和Mongo DB [普通Java-Mongo,而不是Morphia或某些此類CRUD工具]。
我們正處於一個圖像POJO類及其相關的元數據如下圖所示,java mongo arraylist保存
public class Img{
private String name;
private List<Metadata> imgMetaList = new ArrayList<Metadata>();
//Getters, setters etc...
public List<Metadata> getImgMetaList() {
return imgMetaList;
}
}
元數據類有一些數據,實現Serializable接口沒有工作,所以
我伸出ReflectionDBObject,
public class Metadata extends ReflectionDBObject{
private String tag;
private String val;
//Getters, setters etc...
}
我想將Img存入Mongo。我用下面的代碼,它的工作。
BasicDBObject updateQuery = new BasicDBObject();
updateQuery.put("name", img.getName());
BasicDBObject updMetadata = new BasicDBObject();
updMetadata.put("$push", new BasicDBObject("imgMetaList",img.getImgMetaList()));
collection.update(updateQuery,updMetadata, true, false);
這會插入在蒙戈如下一個文件,
{
"_id" : ObjectId("503a1991db2e9f431cf0d162"),
"name" : "test.jpg",
"imgMetaList" : [
[
{
"Tag" : "tag1",
"Val" : "val1",
"_id" : null
}
]
]
}
在這裏有2個問題,
1.代碼插入2個方括號而不是一個來容納陣列
2 。爲什麼不是爲列表生成_id。
請讓我知道。
Regards,Vish
關於第一個問題:$推追加值字段,如果字段是一個現有的陣列,否則將現場到數組[值]如果字段不存在。由於您使用$ push插入List,因此會創建兩個方括號。對於第二個問題,我不知道爲什麼_id沒有生成。 –