保存mongodb中的对象列表

时间:2012-12-08 01:52:35

标签: java mongodb

我有汽车列表{car1,car2,car3},每辆汽车至少有两个或更多字段。该列表将转换为BasicDBList。 Example here

DBObject saveObject = new BasicDBObject().append("$push", dbBasicListOfCars);
collection.(car).save(saveObject);

它无法将列表保存在自己的集合中,并且抱怨该字段无法以“$”符号开头。

如何将整个列表推送到集合中?或者我是否需要将个人车保存在收藏中?

1 个答案:

答案 0 :(得分:1)

new BasicDBObject().append("$push", dbBasicListOfCars);

在上面的语句中,您尝试在DBObject中插入键值对,键为“$ push”,值为 dbBasicListOfCars 。 MongoDB不允许密钥有'$'因此它失败。

但是,您尝试保存的方式也是错误的。

您需要的是com.mongodb.BasicDBList,它是一个允许创建数组DBObject的实用程序类。 BasicDBList仅支持数字键。传递无法转换为int的字符串将导致IllegalArgumentException。

 BasicDBList list = new BasicDBList();
 list.put("1", "bar"); // ok
 list.put("1E1", "bar"); // throws exception

参考:http://api.mongodb.org/java/current/com/mongodb/BasicDBList.html

注意:MongoDB还将从java.util.Lists创建数组。

DBObject obj = new BasicDBList();
 obj.put( "0", value1 );
 obj.put( "4", value2 );
 obj.put( 2, value3 );

这通过创建DBObject {“0”来模拟数组[value1,null,value3,null,value2]:value1,“1”:null,“2”:value3,“3”:null,“4” :value2}。