20 coins where절 사용 시 err 발생하는 이유

uid[regex]=^a&upw[ne]=
이렇게 regex랑 ne 는 사용이 되는데 where절만 넣으려고하면 err가 발생합니다.
uid[where]=this.uid=='guest'&upw[ne]=
응답으로 guest를 기대했는데 err가 발생하는 이유를 모르겠습니다

#web
Author
Answers 1
This answer was accepted. Thanks for sharing!
avatar
keyme
CTF Second Place

직접 환경을 구축해서 실행해보시면 아시겠지만

$ne를 사용하는 경우에는
db.user.findOne( { uid: { $ne: "" } );
위와 같이 쿼리가 실행됩니다.

문제 없는 쿼리기 때문에 정상실행되죠.

하지만 uid[where]=this.uid==‘guest’&upw[ne]= 와 같이 사용한다고하면
db.user.findOne( { uid: { $where: this.uid=='guest' } );

이런식으로 쿼리가 들어가는데 옳바른 쿼리가 아닙니다.

db.user.findOne({ $where: function() { return this.uid === 'guest'; } });
예를 들면 위와 같이 where를 사용해야 정상적으로 작동하겠죠.

https://www.mongodb.com/docs/manual/reference/operator/query/where/

mongodb 공식 문법 메뉴얼 확인해보시면 확실히 이해하실수 있을 것 같네요!

2023.05.29. 15:26
Do you know the answer?
Share and earn points!
Answer and earn points