Visitor Trends
Today
Yesterday
Total
Popular Posts
Latest Posts
Fresh thoughts and recent updates from the blog
tistory view
728x90
반응형

아래 query 문은 users 라는 collection에 존재하는 모든 documents 들의 userid 필드를 email 필드의 값으로 수정하라는 것입니다. 기존의 updateMany 쿼리문에서 바뀐 것은 단 하나, [ ] 대괄호가 추가된 것입니다. 대괄호가 추가되지 않으면 $email 을 이해하지 못하고, 그냥 "$email"이라는 문자열로 인식할 것입니다.
db.users.updateMany({}, [{"$set":{"userid":"$email"}}])
즉, A와 같은 documents 들이 모두 B의 documents 들로 바뀐다는 것입니다.
// A
{
"_id" : ObjectId("5fc44db8d05a6a50dc989dc7"),
"type" : "user",
"userid" : "abcd",
"email" : "abcd@naver.com",
"__v" : 0
}
{
"_id" : ObjectId("5fc44db8d05a6a50dc989dc7"),
"type" : "user",
"userid" : "test",
"email" : "test@daum.net",
"__v" : 0
}
// B
{
"_id" : ObjectId("5fc44db8d05a6a50dc989dc7"),
"type" : "user",
"userid" : "abcd@naver.com",
"email" : "abcd@naver.com",
"__v" : 0
}
{
"_id" : ObjectId("5fc44db8d05a6a50dc989dc7"),
"type" : "user",
"userid" : "test@daum.net",
"email" : "test@daum.net",
"__v" : 0
}
조금 더 말씀드리자면 아래와 같이 응용해서 사용할 수도 있습니다.
db.users.updateMany({"userid":"asdf1234"}, [{"$set":{"userid":{"$concat":["$userid","_","$type"]}}}])
만약 asdf1234 라는 계정이 존재한다면, 해당 계정의 userid 는 A에서 B로 바뀔 것입니다. $concat은 대괄호 안에 들어있는 문자열들을 모두 하나의 문자열로 만들어줍니다.
// A
{
"_id" : ObjectId("5fc44db8d05a6a50dc989dc7"),
"type" : "user",
"userid" : "asdf1234",
"email" : "asdf1234@naver.com",
"__v" : 0
}
// B
{
"_id" : ObjectId("5fc44db8d05a6a50dc989dc7"),
"type" : "user",
"userid" : "asdf1234_user",
"email" : "asdf1234@naver.com",
"__v" : 0
}728x90
반응형
'Dev > Node.js' 카테고리의 다른 글
| [Nodejs] http-proxy 프록시로 웹 출력하기 (0) | 2023.09.27 |
|---|---|
| [Nodejs] 프로젝트 생성하기 (0) | 2023.09.26 |
| [MongoDB] find 쿼리문으로 데이터 하나만 뽑는 법 (0) | 2021.11.03 |
| [Nodejs - Mongoose] Schema에서 default 값을 현재 시간으로 하는 법 (4) | 2021.07.07 |
| [오류해결] Node Sass version 6.0.0 is incompatible with ^4.0.0 || ^5.0.0. (0) | 2021.05.13 |
Comments