new BasicDBObject().append("$push", dbBasicListOfCars);
在上面的语句中,您尝试在 DBObject 中插入一个键值对,键为"$push",值为dbBasicListOfCars。MongoDB 不允许键有'$',因此它失败了。
但是,您尝试保存的方式也是错误的。
您需要的是 com.mongodb.BasicDBList,它是一个允许创建数组 DBObjects 的实用程序类。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" : value2 } 来模拟数组 [ value1, null, value3, null, value2 ] .