MongoDB에서 파일 이름과 위치를 저장하는 쿼리
MongoDB에서는 insertOne() 메서드를 사용해 문서(document)를 컬렉션(collection)에 손쉽게 저장할 수 있습니다. 이번 글에서는 파일 이름(fileName)과 파일 경로(fileLocation)를 하나의 문서로 저장하고, 저장된 데이터를 조회하는 전 과정을 예제와 함께 살펴보겠습니다.
1. insertOne()으로 문서 삽입하기
먼저 demo645라는 컬렉션에 파일 정보를 담은 문서를 차례로 삽입합니다. 각 문서는 fileName(파일 이름)과 fileLocation(파일 경로) 두 개의 필드를 가지고 있습니다.
> db.demo645.insertOne(
... {
... 'fileName' : 'MongoDB Program',
... 'fileLocation':'C:/users/workspace/AllMongoDBProgram/MongoDB Program'
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9c78f36c954c74be91e6e8")
}첫 번째 문서가 성공적으로 삽입되면 acknowledged 값이 true로 반환되며, MongoDB가 자동 생성한 ObjectId도 함께 확인할 수 있습니다. 같은 방식으로 Java 소스 파일과 SQL 스크립트 파일의 정보도 저장합니다.
> db.demo645.insertOne(
... {
... 'fileName' : 'SumOfTwoNumbers.java',
... 'fileLocation':'E:/eclipseWorkspace/AllJavaPrograms/SumOfTwoNumbers.java'
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9c78f36c954c74be91e6e9")
}
> db.demo645.insertOne(
... {
... 'fileName' : 'Script.sql',
... 'fileLocation':'C:/MySQLQuery/Script.sql'
... }
... );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e9c78f46c954c74be91e6ea")
}2. find()로 저장된 데이터 조회하기
컬렉션에 저장된 모든 문서는 find() 메서드를 사용해 조회할 수 있습니다. 인자 없이 호출하면 해당 컬렉션의 전체 문서가 출력됩니다.
> db.demo645.find();
위 명령을 실행하면 다음과 같이 앞서 저장한 세 개의 파일 정보가 모두 출력됩니다.
{ "_id" : ObjectId("5e9c78f36c954c74be91e6e8"), "fileName" : "MongoDB Program", "fileLocation" : "C:/users/workspace/AllMongoDBProgram/MongoDB Program" }
{ "_id" : ObjectId("5e9c78f36c954c74be91e6e9"), "fileName" : "SumOfTwoNumbers.java", "fileLocation" : "E:/eclipseWorkspace/AllJavaPrograms/SumOfTwoNumbers.java" }
{ "_id" : ObjectId("5e9c78f46c954c74be91e6ea"), "fileName" : "Script.sql", "fileLocation" : "C:/MySQLQuery/Script.sql" }정리
이처럼 MongoDB에서는 별도의 테이블 정의 없이 insertOne() 한 번으로 파일 이름과 경로 같은 메타데이터를 자유롭게 저장할 수 있습니다. 특히 다양한 확장자(.java, .sql 등)의 파일 정보를 유연하게 관리해야 하는 경우, 스키마가 고정되지 않은 MongoDB의 문서 구조가 매우 유용합니다. 필요에 따라 fileName 필드에 인덱스를 추가하거나 조건 검색을 활용하면 대량의 파일 정보도 빠르게 조회할 수 있습니다.