java - 向 Mongo db 集合插入多个用户输入值时出现异常
问题描述
我正在 JAVA-MongoDB 中编写一个基本的 CREATE 和 READ 操作。我正在尝试将用户输入的记录插入数据库并读取相同的内容。
这就是我当前代码的外观-
Create.java-
import com.mongodb.Block;
import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.client.*;
import com.mongodb.client.model.InsertManyOptions;
import org.bson.Document;
import javax.print.Doc;
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Create {
private static Scanner scanner = new Scanner(System.in);
private static String inputValue;
public static void main(String args[]) {
ConnectionString connectionString = new ConnectionString("mongodb+srv://USER:PASSWD@CLUSTER.mongodb.net/mydb?retryWrites=true&w=majority");
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(connectionString)
.build();
MongoClient mongoClient = MongoClients.create(settings);
MongoDatabase database = mongoClient.getDatabase("test");
System.out.println("Enter any string:");
inputValue = scanner.nextLine();
//Creating a collection
database.createCollection("students");
//Preparing a document
Document document = new Document("name", inputValue);
//Inserting the created documents
List<Document> list = new ArrayList<Document>();
for(Document d: list) {
list.add(d);
}
database.getCollection("students").insertMany(list, new InsertManyOptions().ordered(false));
System.out.println("Document inserted successfully");
mongoClient.close();
}
}
Read.java
import com.mongodb.Block;
import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.client.*;
import org.bson.Document;
import java.sql.SQLOutput;
import java.util.Iterator;
import java.util.Scanner;
public class Read {
private static Scanner scanner = new Scanner(System.in);
private static String inputValue;
public static void main(String args[]) {
ConnectionString connectionString = new ConnectionString("mongodb+srv://USER:PASSWD@CLUSTER.mongodb.net/mydb?retryWrites=true&w=majority");
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(connectionString)
.build();
MongoClient mongoClient = MongoClients.create(settings);
MongoDatabase database = mongoClient.getDatabase("test");
// Read Data from MongoDB
//Creating a collection object
MongoCollection<Document> collection = database.getCollection("students");
//Retrieving the documents
FindIterable<Document> iterDoc = collection.find();
Iterator it = iterDoc.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
mongoClient.close();
// findIterable.forEach(printBlock);
}
}
解决方案
错误代码几乎说明了一切。
此数据库中已存在集合“学生”
//Creating a collection
database.createCollection("students");
这是您代码中正确的部分,但必须只运行一次,因为如果集合存在,则会抛出异常......
因此,只需将其删除并记住,通过代码创建集合会在它们已经存在时引发错误。
而且您确实知道要插入的列表是空的,对吗?
Document document = new Document("name", inputValue); // This is your created document
//Inserting the created documents
List<Document> list = new ArrayList<Document>(); // This is a list that CAN contain Documents but it is initialized and it is EMPTY
for(Document d: list) // The for loop will not be executed at all since the list is empty...
{
list.add(d);
}
将您的文档添加到您的列表中。
list.add(document);
增强for
循环用于遍历List
. 我不确定,但你已经想到了,但你可以检查一下以了解它。
推荐阅读
- python - 使用 scipy.solve_bvp 求解 BVP,其中函数返回一个数组
- c# - 从文件读取并写入 C# 中的临时 .txt 文件?
- javascript - 将 jwt 令牌从服务器端发送到客户端的正确方法是什么?
- python - 如何在python中混合列表并实时查看
- mysql - MySQL LEFT JOIN 性能
- css - 如何在浏览器中检测操作系统是否处于夜灯模式?
- node.js - 在 Nodejs 中使用 Unirest 将图像保存到文件
- c# - 如何通过 Web API 使用 AntiXss
- go - Go 扫描缓冲区有时会挂起
- mysql - 在排除某些客户的同时寻找具有相似口味的客户