用于在mongodb集合中插入包含元素数组的文档的json Java API
我想使用JavaAPI将以下JSON插入Mongodb集合。这里bookmarks是一个书签列表POJO
{
"_id": 5,
"email": "xxx@gmail.com",
"bookmarks": [
{
"name": "chipotle",
"category": "restaurant",
"stats": "203 likes",
"tried": true
},
{
"name": "olivegarden",
"category": "restaurant",
"stats": "203 likes",
"tried": true
}
]
}
我使用了以下API。但它似乎不起作用
BasicDBObject document = new BasicDBObject();
document.append("email", userList.get(i).getEmail());
document.append("bookmarks", userList.get(i).getBookmarksList() ) ;
WriteResult result = collection.insert(document);
这就是我运行单元测试时遇到的错误
java.lang.IllegalArgumentException: can't serialize class com.xxx.pojo.Bookmark
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:272)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:173)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:119)
at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:27)
at com.mongodb.OutMessage.putObject(OutMessage.java:289)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:239)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:204)
at com.mongodb.DBCollection.insert(DBCollection.java:76)
at com.mongodb.DBCollection.insert(DBCollection.java:60)
at com.mongodb.DBCollection.insert(DBCollection.java:105)
即使在使书签POJO可序列化之后,我还是再次出现了同样的错误。所以我猜我使用Java API进行插入是错误的。如何将POJO直接映射到mongodb元素
# 1 楼答案
正如错误所暗示的
can't serialize class com.xxx.pojo.Bookmark
,这意味着包含Bookmark.class
的List
不能直接插入BasicDBObject
文档中您需要使用:
BasicDBList
,如下所示:现在在您的文档中添加
bookmark_list
,如下所示: