尝试使用MongoDB Java驱动程序更新文档 非常感谢。 我只想感谢你点击这个问题!我已经尽了最大的努力使这件事尽可能彻底 但是,如果您需要进一步澄清,请随时告诉我 如果你觉得问题太长。你可以阅读第三和第四部分,然后在这里发布你自己的解决方案 安装程序 Mongodb Java驱动程序:org.Mongodb:mongo Java驱动程序:3.11.0-rc0 我想做什么 查找具有特定“名称”字段的特定文档 然后更新另一个字段或整个文档 示例文件 我现在在做什么 关于我的错误解决方案,我发现了什么 collection.find(eq(“name”,doc.get(“name”)).first()从不返回null Java只告诉我它返回一个对象。告诉我这是一个TResult,它指向MongoIterable。我被困在这里了 代码结果是最终没有插入/更新任何文档 参考文献
尝试使用MongoDB Java驱动程序更新文档 非常感谢。 我只想感谢你点击这个问题!我已经尽了最大的努力使这件事尽可能彻底 但是,如果您需要进一步澄清,请随时告诉我 如果你觉得问题太长。你可以阅读第三和第四部分,然后在这里发布你自己的解决方案 安装程序 Mongodb Java驱动程序:org.Mongodb:mongo Java驱动程序:3.11.0-rc0 我想做什么 查找具有特定“名称”字段的特定文档 然后更新另一个字段或整个文档 示例文件 我现在在做什么 关于我的错误解决方案,我发现了什么 collection.find(eq(“name”,doc.get(“name”)).first()从不返回null Java只告诉我它返回一个对象。告诉我这是一个TResult,它指向MongoIterable。我被困在这里了 代码结果是最终没有插入/更新任何文档 参考文献,java,mongodb,mongo-java-driver,mongo-collection,Java,Mongodb,Mongo Java Driver,Mongo Collection,collection.find()返回文档数组。这里实际需要的是collection.findOneAndUpdate() 从findOneAndUpdate获取t对象后,可以使用对象映射器将其映射回java对象 我尝试了一些代码,效果很好。这与您的代码没有太大区别 从mongo shell创建了一个文档: 我的Java代码: // Test input documents private Document doc1 = new Document()
collection.find()
返回文档数组。这里实际需要的是collection.findOneAndUpdate()
findOneAndUpdate
获取t对象后,可以使用对象映射器将其映射回java对象
我尝试了一些代码,效果很好。这与您的代码没有太大区别 从mongo shell创建了一个文档: 我的Java代码:
// Test input documents
private Document doc1 = new Document()
.append("name", "Richard Koba")
.append("skills", Arrays.asList("jump", "dance", "sing"));
private Document doc2 = new Document()
.append("name", "Richard K")
.append("skills", Arrays.asList("sings"));
当doc1
被传递给以下方法时,结果是:“Doc FOUND”。使用doc2
时,结果是“####未找到Doc”
我也试过这个,;也很好
if (collection.find(queryFilter).iterator().tryNext() == null) { // ... }
我认为您的代码或数据库/集合可能存在其他问题。使用新数据进行一些调试和测试可能会揭示真正的问题
- 您是否检查了该文档是否已存在于mongo shell或Compass tools的集合中李>
- 您是否使用了正确的数据库和集合名称李>
- 每次测试运行后,是否验证数据库中的数据是否已更新/插入
collection.find(eq(“name”,doc.get(“name”)).first()永远不会返回 空
对于我上面发布的代码,当
users
集合为空时,find查询确实返回了null
。我想你是对的。。。看起来我在我的主课上使用了错误的方法。谢谢你的帮助!
MongoDB Enterprise > db.users.findOne()
{
"_id" : "5de6af7cfa42833bd9849477",
"name" : "Richard Koba",
"skills" : [ ]
}
// Test input documents
private Document doc1 = new Document()
.append("name", "Richard Koba")
.append("skills", Arrays.asList("jump", "dance", "sing"));
private Document doc2 = new Document()
.append("name", "Richard K")
.append("skills", Arrays.asList("sings"));
private void checkDocument(Document doc) {
MongoClient mongoClient = MongoClients.create("mongodb://localhost/");
MongoDatabase database = mongoClient.getDatabase("javadb");
MongoCollection<Document> collection = database.getCollection("users");
if (collection.find(eq("name", doc.get("name"))).first() == null) {
System.out.println("### Doc NOT found");
}
else {
System.out.println("### Doc FOUND");
}
}
Document d = collection.find(eq("name", doc.get("name"))).first();
if (d == null) { // ... }
if (collection.find(queryFilter).iterator().tryNext() == null) { // ... }