我正在 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:[email protected]/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:[email protected]/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);
}
}
我能夠成功插入和讀取一條記錄。但是當我嘗試在提示中輸入一些不同的輸入時,它會拋出以下例外-

uj5u.com熱心網友回復:
錯誤代碼幾乎說明了一切。
此資料庫中已存在集合“學生”
//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. 我不確定,但你已經想到了,但你可以檢查這個以了解它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/339375.html
下一篇:使用泛型回傳型別引數Java
