我们正在使用 Java 服务器和 Mongo DB [纯 Java-Mongo 而不是 Morphia 或用于 CRUD 的一些此类工具]。
我们有一个 Image Pojo 类及其相关的元数据,如下所示,
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);
这会在 Mongo 中插入一个文档,如下所示,
{
"_id" : ObjectId("503a1991db2e9f431cf0d162"),
"name" : "test.jpg",
"imgMetaList" : [
[
{
"Tag" : "tag1",
"Val" : "val1",
"_id" : null
}
]
]
}
这里有 2 个问题,
1. 代码插入两个方括号而不是一个来容纳数组
2. 为什么没有为列表生成 _id。
请告诉我。
问候, 维什