java - 在 mongodb 中保存对象列表

标签 java mongodb

我有汽车列表 { car​​1, 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/

相关文章:

使用 isNull 时出现 Java UnfinishedVerificationException

java - 迭代大量集合时出现 Mongodb 游标问题

Java 无法正确导出我的资源

mongodb - 在 mongodb 中存储公共(public) SSH rsa key 是否安全?

python - 使用 Python Eve Rest 和 Mongo 过滤嵌入式文档

c# - MongoDB C# 聚合 - unwind -> groupBy

node.js - "ERROR:MongoServerError: E11000 duplicate key error collection: myFirstDatabase.files index: key_1 dup key: { key: null }"

java - 在 GlassFish 4.0 上部署简单的 REST 示例

java - Java 中以日期格式分割字符串

java - 遍历2D ArrayList并将其显示在JSP页面上