我对如何在现有的mongodb文档中将元素添加到数组中有点困惑,或者为什么我的结果没有正确显示以及我的期望如何。
html" target="_blank">集合中只有一个文档,并且永远只有一个。当我在命令行上的mongo会话中执行db.collection-name.find.pretty()
命令时,mongo文档看起来像:
{
"_id" : ObjectID("1234567890"),
"details" : {
...
},
"calculations" : [
{
"count" : 1,
"total" : 10,
"mean" : 2.5
},
{
"count" : 2,
"total" : 20,
"mean" : 6.4
}
]
}
我想在< code >计算列表中添加另一个对象。
我运行的 Java 代码基于此示例:
// Get the database and collection
MongoDatabase database = mongo.getDatabase(dataBaseName);
MongoCollection<Document> collection = database.getCollection(collectionName);
Document document = collection.find().first(); // will only ever be one document
// The object comes in as a Map
Map<String, Object> incomingMap = new HashMap<>();
incomingMap.put("count", 3);
incomingMap.put("total", 4);
incomingMap.put("mean", 7.9);
// convert to a Document
Document newDocument = new Document();
incomingMap.forEach((k, v) -> {
newDocument.append(k, v);
});
// append this to the collection - this is where I am confused
// for this example just hardcoding the _id value for simplicity
collection.updateOne(new Document("_id", "1234567890"), Updates.push("calculations", newDocument));
但是,当我在这之后的代码中执行System.out.println(collection.find(). First())
或在mongo会话中执行db.collection-name.find.pretty()
时,没有添加新文档。没有抛出错误,完成正常。
我想知道的是
行collection.updateOne(new Document(“_id”, “1234567890”), Updates.push(“computings”, newDocument)));
正确吗?document.update(new Documen(Updates.push(“computings”, newDocument)));
或类似?1234567890”), Updates.push(“computings”, newDocument));
您有过滤条件问题(您的_id
是ObjectId
类型)
new Document("_id", ObjectId("1234567890"))`
始终确保正确更新文档。外观代码碎片:
UpdateResult result = collection.updateOne(filter, update);
log.info("Update with date Status : " + result.wasAcknowledged());
log.info("Nº of Record Modified : " + result.getModifiedCount());
https://api.mongodb.com/java/3.1/com/mongodb/client/result/UpdateResult.html
问题内容: 我的问题是我想在遍历新元素的同时扩展一个包含新元素的列表,并且希望迭代器继续刚才添加的元素。 根据我的理解,会在列表中的当前元素之前而不是之后添加一个元素。是否可以通过其他方式实现这一目标? 问题答案: 除了以外,您无法在修改集合时使用进行迭代。 但是,如果使用方法,该方法返回,并对其进行迭代,则您还有更多要修改的选项。从javadoc中获取: 新元素插入到隐式光标之前:…后续调用将返
我有一个帐户类,用于我正在构建的求职应用程序,其中包含教育实例的链接列表(只是大学名称,gpa等)。我想要一个HTTP Post请求来向列表中添加一个元素: 这是account类: 然而,当我实际发送带有教育数据的post请求时(针对一个已经存在的用户),它并不发布。它确实正确地打印了帐户a(添加了教育),但实际上并不更新数据库。 此外,这是我拥有的另一个类: 编辑:这是教育课:
问题内容: 我想避免。我该怎么办? 问题答案: 您可以在迭代本身期间使用支持remove / add方法的。
我应该如何编写允许我在数组中添加和删除数组项的补丁方法? 项目类别: 菜单模型: 我有一个菜单组件和一个菜单服务。我需要一个补丁方法,将元素添加到菜单内的ItemClass[]数组中,并能够删除它们。 API方法如下所示: (来自https://stackoverflow.com/a/54679303/479251)
问题内容: 我有一个单击按钮时执行的功能。假设有一个循环将1到10加到。我将该数据添加到中。它完美地工作,并且数字相加。然后我在循环中添加了一个。但是输出是不同的。我想每秒增加1个元素。但是现在它等待10秒,并在第10秒结束时将所有1到10加在一起。我在哪里错了? 问题答案: 您应该在单独的线程中更新列表,否则最终将阻塞事件分发线程。 请尝试以下操作:
问题内容: 这个清单对象在咬我屁股。 每当我尝试向其中添加元素时,它都会产生以下结果: 产生错误的行无关紧要,但无论如何这里都是这样: 我不应该静态访问它吗? 变量的实际声明: 有任何想法吗?在Google上找不到任何值得的东西。 问题答案: Arrays.asList()将给您返回不可修改的列表,这就是为什么添加失败的原因。尝试使用以下方法创建列表: