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

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

#web
작성자 정보
답변 1
질문자가 채택한 답변입니다. 좋은 지식을 공유해줘서 고마워요!
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
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기