Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 Math.random()으로 고유한 데이터를 무작위 생성하고 'John'으로 시작하는 EmailId 값 설정하기

MongoDB에서 고유한(unique) 데이터를 무작위로 생성하려면 Math.random() 함수를 활용할 수 있습니다. 이 글에서는 컬렉션을 생성하고, 각 문서의 EmailId 필드에 'John'으로 시작하는 무작위 이메일 값을 일괄 업데이트하는 방법을 단계별로 살펴보겠습니다.

1단계: 컬렉션 생성 및 문서 삽입

먼저 demo561이라는 컬렉션을 만들고 EmailId 값이 null인 문서 세 개를 삽입합니다.

> db.demo561.insertOne({EmailId:null});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8f490454b4472ed3e8e86c")
}
> db.demo561.insertOne({EmailId:null});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8f490654b4472ed3e8e86d")
}
> db.demo561.insertOne({EmailId:null});{
   "acknowledged" : true, "insertedId" : ObjectId("5e8f490a54b4472ed3e8e86e")
}

2단계: find() 메서드로 전체 문서 확인

find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.

> db.demo561.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e8f490454b4472ed3e8e86c"), "EmailId" : null }
{ "_id" : ObjectId("5e8f490654b4472ed3e8e86d"), "EmailId" : null }
{ "_id" : ObjectId("5e8f490a54b4472ed3e8e86e"), "EmailId" : null }

3단계: Math.random()을 활용한 무작위 데이터 생성 쿼리

다음은 forEach()와 update()를 조합하여 각 문서의 EmailId 필드에 'John'으로 시작하는 무작위 값을 설정하는 쿼리입니다. Math.random()에 큰 숫자를 곱해 소수점 이하 자릿수까지 포함한 고유한 문자열을 만들어냅니다.

> db.demo561.find().forEach(function(doc){
...    db.demo561.update({_id : doc._id}, {$set:{
...       EmailId:'John'+Math.random()*100000000000000000+'@'+Math.random()*100000000000000000+'.com'
...    }})
... })

최종 결과 확인

업데이트가 완료된 후 다시 find() 메서드로 전체 문서를 조회해 보겠습니다.

> db.demo561.find();

실행 결과, 각 문서마다 서로 다른 무작위 이메일 값이 'John' 접두사와 함께 저장된 것을 확인할 수 있습니다.

{ "_id" : ObjectId("5e8f490454b4472ed3e8e86c"), "EmailId" : "John23607829153155868@62688631475897960.com" }
{ "_id" : ObjectId("5e8f490654b4472ed3e8e86d"), "EmailId" : "John63351292234094710@79460595429439740.com" }
{ "_id" : ObjectId("5e8f490a54b4472ed3e8e86e"), "EmailId" : "John71315584787457890@99884571221675000.com" }

이처럼 Math.random()과 forEach(), update()를 함께 사용하면 대량의 문서에 대해 손쉽게 고유한 무작위 데이터를 생성하고 일괄 업데이트할 수 있습니다. 테스트 데이터를 만들거나 더미 이메일 주소를 채워야 할 때 유용하게 활용할 수 있는 기법입니다.