我有汽车列表 { car1, car2, car3 } 并且每辆车至少有两个或更多字段。该列表将转换为 BasicDBList。 Example here
DBObject saveObject = new BasicDBObject().append("$push", dbBasicListOfCars);
collection.(car).save(saveObject);
它无法将列表保存在自己的集合中,并提示该字段不能以“$”符号开头。
如何将整个列表推送到集合中?或者我必须保存单独的汽车来 Collection 吗?
最佳答案
new BasicDBObject().append("$push", dbBasicListOfCars);
在上面的语句中,您尝试在 DBObject 中插入键值对,键为 "$push",值为 dbBasicListOfCars。 MongoDB 不允许键有“$”,因此失败。
但是,您尝试保存的方式也是错误的。
您需要的是 com.mongodb.BasicDBList,它是一个允许创建数组 DBObject 的实用程序类。 BasicDBList 仅支持数字键。传递无法转换为整数的字符串将导致 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, "1": null, "2": value3, "3": null, "4"来模拟数组 [ value1, null, value3, null, value2 ] :值2}。
关于java - 在 mongodb 中保存对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13773666/