에러

[MongoDB] BSONTypeError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer 에러 해결

뚜키 💻 2022. 11. 9. 23:33
반응형

[MongoDB] BSONTypeError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer 에러 해결

 

BSONTypeError: Argument passed in must be a string of 12 bytes or a string of 24 hex characters or an integer

 

✔ 환경

- MongoDB 4.4.10

 

 

✔ 현상

MongoDB를 사용하는데 새로운 Collection을 만들어서 삭제하려고 쿼리를 날렸는데 해당 에러가 났다.

 

<문제 쿼리>

db.cherry.deleteOne({ "_id" : "cac42863-b337-4740-b77e-d802a07fdd5c"});

 

 

✔ 원인

기존 Collection들은 id값으로 String을 직접 지정해줬었는데 새 Collection은 insert할때 id를 지정해주지않았다.

그럼 mongoDB에서는 자동으로 ObjectId를 지정해준다.

 

기존에는 String값을 직접 지정해줘서 그냥 문자로 조회됐었던것..

 

 

✔ 해결

ObjectId()를 사용한다.

 

db.cherry.deleteOne({ "_id" : ObjectId("cac42863-b337-4740-b77e-d802a07fdd5c") });

 

이렇게 바꾸면 해결 완료!

 

 

 

 

 

+)

https://www.mongodb.com/docs/manual/reference/method/db.collection.deleteOne/

공식문서만 봤어도 바로 눈치챘을텐데.. 역시 새로운걸 써야할때는 기존 코드만 보고 파악하지말고 공식문서를 봐야한다...

몽고디비.. 이제 써야하니까 공식문서 좀 잘읽어봐야겠당.. 

 

 

 

Reference.

https://www.mongodb.com/docs/manual/reference/method/ObjectId/#objectid

 

ObjectId — MongoDB Manual

Docs Home → MongoDB Manual ObjectId( )Returns a new ObjectId. The 12-byte ObjectId consists of:A 4-byte timestamp, representing the ObjectId's creation, measured in seconds since the Unix epoch.A 5-byte random value generated once per process. This rando

www.mongodb.com

https://www.mongodb.com/docs/manual/reference/method/db.collection.deleteOne/

 

db.collection.deleteOne() — MongoDB Manual

Docs Home → MongoDB Manual db.collection.deleteOne()mongosh MethodThis page documents a mongosh method. This is not the documentation for a language-specific driver, such as Node.js.For MongoDB API drivers, refer to the language-specific MongoDB driver d

www.mongodb.com

 

반응형