Bibi's DevLog ๐Ÿค“๐ŸŽ

TIL - [20.08.26] ๋ณธ๋ฌธ

TIL

TIL - [20.08.26]

๋น„๋น„ bibi 2020. 8. 26. 17:40

์˜ค๋Š˜์€ ํ•™๊ต ๊ฐ€์„œ ์กธ์—…์žฅ ๋ฐ›์•„์˜จ ๋‚ ! ์ €๋…์—๋Š” ์ŠคํŒŒ๋ฅดํƒ€ ์ˆ˜์—…๋„ ์žˆ๋‹ค. ๊ทธ ์‚ฌ์ด์— ๊ณต๋ถ€๊ณต๋ถ€

 

์˜ค๋Š˜ ํ•  ์ผ

-ํŠœํ„ฐ๋‹˜์ด ์ˆ˜์ •ํ•ด ์ฃผ์‹  ๋ถ€๋ถ„๋“ค์„ ์ฐพ๊ณ , ๊ตฌ๊ธ€๋งํ•ด์„œ ์ •๋ฆฌํ•ด๋‘๊ธฐ
-์ผ์ •ํŽธ์ง‘API - ํŽธ์ง‘๋œ ๋‚ด์šฉ ์ €์žฅํ•˜๋Š” ๋ถ€๋ถ„ ๋งŒ๋“ค๊ธฐ
-(์ˆ˜์—…์‹œ๊ฐ„์— ์ด์–ด์„œ ํ•˜๊ธฐ) ๋‚ ์”จ์กฐํšŒ API ์„ค๊ณ„ํ•˜๊ณ  ๋งŒ๋“ค๊ธฐ

 

 

TIL

-ํŠœํ„ฐ๋‹˜์ด ์ˆ˜์ •ํ•ด ์ฃผ์‹  ๋ถ€๋ถ„๋“ค์„ ์ฐพ๊ณ , ๊ตฌ๊ธ€๋งํ•ด์„œ ์ •๋ฆฌํ•ด๋‘๊ธฐ

(1)

 

DB์—์„œ '_id' ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด์— ์“ฐ๋˜ jsonify๋ฐฉ์‹์ด ์•„๋‹Œ dumps๋ฐฉ์‹์„ ์ฐพ์•„์„œ ๋‚ด ์ฝ”๋“œ์— ์ ์šฉํ•ด ์ฃผ์…จ๋‹ค.
dumps๋ฐฉ์‹์ด ๋ฌด์—‡์ธ์ง€ ๊ตฌ๊ธ€๋งํ–ˆ๋Š”๋ฐ ์˜์–ด ์ž๋ฃŒ๊ฐ€ ์ •๋ง ๋งŽ๊ณ  ๊ตฌ๊ธ€๋ฒˆ์—ญ์œผ๋กœ ๋ด๋„ ๋ชจ๋ฅด๋Š” ์šฉ์–ด๊ฐ€ ๋งŽ๋‹ค(ใ… ใ… )
์˜์–ด๊ณต๋ถ€์™€ ์ปดํ“จํ„ฐ๊ณตํ•™ ๊ธฐ์ดˆ ๊ณต๋ถ€์˜ ํ•„์š”์„ฑ์ด ์ ˆ์‹คํ•˜๊ฒŒ ๋Š๊ปด์ง€๋Š” ์ˆœ๊ฐ„์ด๋‹ค.ใ… 

๊ทธ๋‚˜๋งˆ ๋‚ด๊ฐ€ ์ฐพ๋˜ ๋‚ด์šฉ์„ ๋‹ค๋ฃจ๋Š” stackoverflow์ž๋ฃŒ๊ฐ€ ์žˆ์–ด์„œ ๊ตฌ๊ธ€๋ฒˆ์—ญ์ด๋ผ๋„ ํ•ด ๋ณด์•˜๋‹ค.
(.dumps์™€ .jsonify ๋ฐฉ์‹์˜ ์ฐจ์ด)

https://stackoverflow.com/questions/7907596/json-dumps-vs-flask-jsonify

 

json.dumps vs flask.jsonify

I am not sure I understand the purpose of the flask.jsonify method. I try to make a JSON string from this: data = {"id": str(album.id), "title": album.title} but what I get with json.dumps differ...

stackoverflow.com

The jsonify() function in flask returns a flask.Response() object that already has the appropriate content-type header 'application/json' for use with json responses. Whereas, the json.dumps() method will just return an encoded string, which would require manually adding the MIME type header.

See more about the jsonify() function here for full reference.

Edit: Also, I've noticed that jsonify() handles kwargs or dictionaries, while json.dumps() additionally supports lists and others.

comment : jsonify() handles lists now. See this commit.

 

ํ•ด์„ ๋ฐ ์š”์•ฝ :

jsonify() ๋Š” Flask์˜ ๋‚ด์žฅํ•จ์ˆ˜ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ์‘๋‹ต์— ์‚ฌ์šฉํ•  ์ ์ ˆํ•œ ์ฝ˜ํ…์ธ  ์œ ํ˜• ํ—ค๋” 'application / json'๊ฐ€ ์ด๋ฏธ ์žˆ๋Š” flask.Response() ๊ฐ์ฒด(object)๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋ฐ˜๋ฉด json.dumps()๋Š” ๋ฉ”์„œ๋“œ์ด๋ฉฐ, MIMEํƒ€์ž… ํ—ค๋”๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” "์ธ์ฝ”๋”ฉencoded ๋œ ๋ฌธ์ž์—ด" ๋งŒ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. 

jsonify()๋Š” kwargs, dictionary(๋”•์…”๋„ˆ๋ฆฌ) ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.
๋ฐ˜๋ฉด .dumps()๋Š” kwargs, dictionary, list ์™€ ๊ทธ๋ฐ–์˜ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.
+ ์ถ”๊ฐ€ : ์ด์ œ .jsonify()๋„ list(๋ฆฌ์ŠคํŠธ) ํ˜•์‹์„ ์ง€์›ํ•œ๋‹ค.

*kwargs : ํŒŒ์ด์ฌ์—์„œ์˜ ๊ฐœ๋…์œผ๋กœ keyword argument์˜ ์ค„์ž„๋ง์ด๋‹ค. ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ํ‚ค์›Œ๋“œ=ํŠน์ • ๊ฐ’ ํ˜•ํƒœ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ {'ํ‚ค์›Œ๋“œ' : 'ํŠน์ • ๊ฐ’'} ์˜ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ ๊ทธ๋Œ€๋กœ ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ์ „๋‹ฌ๋œ๋‹ค. 
์ฐธ๊ณ ํ•œ ๋งํฌ : https://brunch.co.kr/@princox/180

 

-> ์•„์ง ๋ชจ๋ฅด๋Š” ์šฉ์–ด๋“ค์ด ๋งŽ์ง€๋งŒ (application/json, MIMEํƒ€์ž…์ด ๋ญ”์ง€. ์ธ์ฝ”๋”ฉ๋œencoded์˜ ๊ฐœ๋…)
๊ทธ๋ž˜๋„ ๋‚ด ์ˆ˜์ค€์—์„œ ์ดํ•ดํ•˜์ž๋ฉด..
.dumps๊ฐ€ .jsonify๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐํƒ€์ž…์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์ง€๋งŒ .jsonify๊ฐ€ ๋‚ด์žฅํ•จ์ˆ˜๋ผ์„œ ๋” ์“ฐ๊ธฐ ํŽธํ•œ ๋“ฏ ํ•˜๋‹ค.
(์ˆ˜์—… ์ค‘์— ๋‹ค๋ฃฌ ๋ฐ์ดํ„ฐ๋“ค์€ ์ „๋ถ€ .jsonify๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์œ ํ˜•์ด์—ˆ๊ณ , mongoDB์˜ _id๊ฐ’์€ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์•„ ์—๋Ÿฌ๊ฐ€ ๋œจ๊ธฐ ๋•Œ๋ฌธ์— DB๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์ œ์™ธ์กฐ๊ฑด์œผ๋กœ ํ•ญ์ƒ {'_id' : 0}์„ ๋„ฃ์—ˆ์—ˆ๋‹ค.

->๋˜ .dumps๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ด์ฌ ํŒŒ์ผ ๋งจ ์œ„์—
from bson.json_util import dumps
from bson.objectid import ObjectId

์ด ๊ตฌ๋ฌธ์„ ์ถ”๊ฐ€ํ–ˆ์—ˆ๋Š”๋ฐ, ์•„๋งˆ dumps์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

 

(2)

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ : this ์™€ e 

(์ผ์ •์กฐํšŒํ•จ์ˆ˜-readsche)๊ฐ ์ผ์ •์„ db์—์„œ ๋ถˆ๋Ÿฌ์™€ appendํ•˜๋Š” card์˜ ํŽธ์ง‘ ๋ฒ„ํŠผ์— ์˜จํด๋ฆญํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ this๋ฅผ ๋„ฃ๊ณ  - fixsche(this) ,

(์ผ์ •ํŽธ์ง‘์„ ์œ„ํ•œ ์กฐํšŒํ•จ์ˆ˜-readasche)์˜ ์ธ์ˆ˜๋กœ e๋ฅผ ๋„ฃ์–ด ๊ทธ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์‹์œผ๋กœ ์—ฐ๊ฒฐํ•ด ์ฃผ์…จ๋‹ค.

-> ์‚ฌ์šฉ๋ฒ•์„ ๊ฒ€์ƒ‰ํ•ด ๋ดค๋Š”๋ฐ (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ this์™€ e, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ this ๋“ฑ..) ์ด๋Ÿฐ ์‹์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ๊ฐ€ ์ž˜ ์•ˆ ๋‚˜์˜จ๋‹ค. ใ… ใ…  ํŠœํ„ฐ๋‹˜๊ป˜ ๊ฐ€์„œ ๊ตฌ๊ธ€๋ง ํ‚ค์›Œ๋“œ๋ฅผ ์ข€ ์—ฌ์ญค๋ด์•ผ๊ฒ ๋‹ค.

 

-4. ์ผ์ •ํŽธ์ง‘API : 4-2ํŽธ์ง‘๋œ ๋‚ด์šฉ ์ €์žฅํ•˜๋Š” ํ•จ์ˆ˜(fixsche) ๋งŒ๋“ค๊ธฐ

ํŠœํ„ฐ๋‹˜์˜ ์ง€๋‚œ ํ”ผ๋“œ๋ฐฑ์— ๋”ฐ๋ผ ์ผ์ •ํŽธ์ง‘API๋ฅผ 4-1.ํŽธ์ง‘ํ•  ์ผ์ • ์กฐํšŒ ํ•จ์ˆ˜(readasche) ์™€ 4-2.์ผ์ • ๋ณ€๊ฒฝ ํ•จ์ˆ˜(fixsche)๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค. ์ผ์ •์กฐํšŒํ•จ์ˆ˜๋Š” ํŠœํ„ฐ๋‹˜์ด ๋„์™€์ฃผ์…จ๊ณ  ์ผ์ •๋ณ€๊ฒฝํ•จ์ˆ˜๋Š” ๋‚ด๊ฐ€ ๋งŒ๋“ค์–ด์•ผ!

-4-2 fixsche ์„ค๊ณ„

์ผ์ •๋ณ€๊ฒฝ์„ ์œ„ํ•œ ์ž„์‹œ input์ฐฝ์˜ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์™€์„œ, ajax๋ฅผ ํ†ตํ•ด POST๋ฐฉ์‹์œผ๋กœ db์— ์ €์žฅ๋˜๋„๋ก ํ•œ๋‹ค.

->์„ค๊ณ„ํ•˜๋ ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด๋‹ˆ, ์ผ๋ฐ˜์ ์ธ ์ผ์ •์ƒ์„ฑ input์ฐฝ์˜ id์™€ ๋˜‘๊ฐ™์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋˜๋ ค๋‚˜?์‹ถ๋‹ค. 
์„œ๋ฒ„์— ์ „์†ก๋˜๋Š” key๊ฐ’์€ ๊ทธ๋Œ€๋กœ ํ•˜๋˜ html์ƒ์˜ id๋Š” ์ฐจ์ด๋ฅผ ์ฃผ์–ด์•ผ ํ• ๊นŒ?..
๊ตณ์ด ๊ทธ๋Ÿด ํ•„์š” ์—†์„ ๊ฒƒ ๊ฐ™๊ธฐ๋„ ํ•œ๋ฐ ๊ณ ๋ฏผ์ด๋‹ค.

 

 

์•ž์œผ๋กœ ํ•  ์ผ(ํ”„๋กœ์ ํŠธ ๋งˆ๊ฐ๊นŒ์ง€)

์ผ์ •ํŽธ์ง‘API 4-2 ์™„์„ฑํ•˜๊ธฐ

์นดํ†ก/์ด๋ฉ”์ผ ์•Œ๋ฆผ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ (์นดํ†ก:ํ”Œ์นœ, ์ด๋ฉ”์ผ: ํŒŒ์ด์ฌ ํ•จ์ˆ˜)

 ๋‚ ์”จ์กฐํšŒ API ์„ค๊ณ„ํ•˜๊ณ  ๋งŒ๋“ค๊ธฐ

ํšŒ์›๊ธฐ๋Šฅ ์ถ”๊ฐ€ํ•˜๊ธฐ

๊ทธ๋ฆฌ๊ณ  ๋งˆ๋ฌด๋ฆฌ ์ฐจ์›์—์„œ ์ „์ฒด์ ์ธ ์™„์„ฑ๋„๋ฅผ ๋†’์ด๊ธฐ.

 


์˜ค๋Š˜์˜ ์ˆœ์ˆ˜๊ณต๋ถ€์‹œ๊ฐ„ - 1:33:36(+์ŠคํŒŒ๋ฅดํƒ€ ์ˆ˜์—…&์ฝ”๋”ฉ์‹œ๊ฐ„-์•ฝ 3์‹œ๊ฐ„)

 

 

 

 

ํŠœํ„ฐ๋‹˜ ํ”ผ๋“œ๋ฐฑ

response = JSON.parse(response)

//์–ธ์ด์Šค์ผ€์ดํ•‘ํ•˜๋Š” ๊ณผ์ •.
// dumps์™€ jsonify์˜ ์ฐจ์ด๋Š” ์ผ์ข…์˜ ์•”ํ˜ธํ™”/์•”ํ˜ธํ™”ํ•˜์ง€์•Š์Œ ์˜ ์ฐจ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.


//์ฆ‰ dumps๋Š”  ์ธ์ฝ”๋”ฉํ•˜์—ฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๊ฑฐ๊ณ (๊ทธ๋ž˜์„œ _id๊ฐ’๋„ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ) ์ด์Šค์ผ€์ดํ•‘(escaping).
//jsonify๋Š” ์ธ์ฝ”๋”ฉ๊ธฐ๋Šฅ ์—†์ด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๋Š๋‚Œ.(๊ทธ๋ž˜์„œ _id๊ฐ’์€ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ - _id๊ฐ’์€ ์ธ์ฝ”๋”ฉ๋˜์–ด ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ)


//response = JSON.parse(response)๋Š” ์„œ๋ฒ„์—์„œ dumps๋กœ ์ธ์ฝ”๋”ฉ(์•”ํ˜ธํ™”)๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๋””์ฝ”๋”ฉ(๋ณตํ˜ธํ™”)ํ•˜๋Š” ๋ช…๋ น์ด๋‹ค! ์–ธ์ด์Šค์ผ€์ดํ•‘(unescaping)
//์„œ๋ฒ„-ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ์— _id๊ฐ’์ด ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ.

๊ทธ๋ฆฌ๊ณ 
// _id๊ฐ’์€ ์‹ค์ œ๋กœ ObjectId(_id = "5f434bc8ee94cdd9868eae10") ์ด๋Ÿฐ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ์ด๊ธฐ ๋•Œ๋ฌธ์—
// id ๊ฐ’์„ ๋‚ด์šฉ์œผ๋กœ ์กฐ๊ฑด์„ ๊ฑธ ๋•Œ {"_id":~~}๋กœ๋งŒ ํ•˜๋ฉด ์•ˆ ๋˜๊ณ , {"_id": ObjectId(~~)} ๋กœ ์ ์–ด์ฃผ์–ด์•ผ. oid=objectid.

 

-์ผ์ •ํŽธ์ง‘API ๋“œ๋””์–ด ์™„์„ฑ!!ใ…œใ…œใ…œ
์ด๋ ‡๊ฒŒ CRUD ๊ธฐ๋ณธ API๊ฐ€ ์™„์„ฑ๋˜์—ˆ๋‹ค๐ŸŽ‰

์ด์ œ..

-ํšŒ์›์ œ ๊ธฐ๋Šฅ

-์•Œ๋ฆผ(์ด๋ฉ”์ผ, ์นดํ†ก) ๊ธฐ๋Šฅ

-๋‚ ์”จ์กฐํšŒ ๊ธฐ๋Šฅ

์ด ์…‹์„ ํ•˜๋ฉด ๋˜๋Š”๋ฐ ์Šฌ์Šฌ ์„ ํƒ๊ณผ์ง‘์ค‘์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™๊ธด ํ•˜๋‹ค..!

 

=>ํŠœํ„ฐ๋‹˜๊ณผ ์ƒ์˜ํ•ด๋ณด๋‹ˆ ํšŒ์›์ œ ๊ธฐ๋Šฅ์„ ๋„์ „ํ•ด๋ณด์ž๊ณ  ํ•˜์…จ๋‹ค!

(์ŠคํŒŒ๋ฅดํƒ€ ์ž๋ฃŒ 'ํ•œ๊ฑธ์Œ ๋”' ์ฐธ๊ณ ํ•ด์„œ)

 

ํšŒ์›์‹œ์Šคํ…œ 

-์ผ๋‹จ ํ•œ๊ฑธ์Œ๋”์— ์žˆ๋Š” ์ƒ˜ํ”Œ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ํ”„๋กœ๊ทธ๋žจ ๋œฏ์–ด๋ณด๊ธฐ

DB๋‚ด์˜ ์ •๋ณด์— ์—ด์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด์„œ, ํšŒ์›๋ฒˆํ˜ธ๋‚˜ id๊ฐ’์„ ์ฃผ๊ณ  ๋ˆ„๊ฐ€ ์“ด ์ผ์ •์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๋ฉด ๋œ๋‹ค.

DB๋ฅผ ์งค ๋•Œ๋Š”..
->'์—‘์…€'์ด๋ฉด ์–ด๋–ป๊ฒŒ ํ• ์ง€๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ผ! DB๋„ ๊ฒฐ๊ตญ 2์ฐจ์›์˜ ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ.

 

๋กœ๊ทธ์ธ์‹œ์Šคํ…œ์„ ์œ„ํ•ด ํ•  ์ผ

- index.html์—์„œ ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์•„์›ƒ์ด ๊ฐ€๋Šฅํ•œ UI๋ฅผ ๋งŒ๋“ค๊ธฐ. ๊ทธ๋ฆฌ๊ณ  ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ ํ•จ์ˆ˜ ๋ฐ‘์— ๋‚ด ํŽ˜์ด์ง€ ์›๋ž˜ ๋‚ด์šฉ ๋‚˜์˜ค๊ฒŒ ํ•˜๊ธฐ.

- login.html์—์„œ ๋กœ๊ทธ์ธ ์ฐฝ์„ ๊ฐ„๋‹จํžˆ ๋งŒ๋“ค๊ธฐ.

- register.html์—์„œ ํšŒ์›๊ฐ€์ž… ์ฐฝ์„ ๊ฐ„๋‹จํžˆ ๋งŒ๋“ค๊ธฐ.

- app.py์˜ ์ƒ˜ํ”Œ ๋กœ๊ทธ์ธ,ํšŒ์›๊ฐ€์ž… ์„œ๋ฒ„ ์ฝ”๋“œ๋ฅผ ๋ณต๋ถ™ํ•ด ๋„ฃ๊ณ  ๋‚ด ํ”„๋กœ์ ํŠธ์— ๋งž๊ฒŒ ๊ณ ์ณ๋ณด๊ธฐ.

 

โ€ปํŠœํ„ฐ๋‹˜์ด ์ฐพ์•„์ฃผ์‹ .. ๊ฒ€์ƒ‰์–ด ํ›„ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š”? ๋ฐฉ๋ฒ•
: ์ •ํ™•ํ•œ ๊ฒ€์ƒ‰์–ด๋กœ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์•„๋„ ์œ ์‚ฌํ•œ ๊ฒฐ๊ณผ ๋ณด์—ฌ์ฃผ๊ธฐ.-> ์ผ์ •๊ฒ€์ƒ‰ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ
collection.find({'field': {'$regex':'regular expression'}})
https://stackoverflow.com/questions/39683102/find-documents-which-contain-a-particular-value-mongo-python

 

Find documents which contain a particular value - Mongo, Python

I'm trying to add a search option to my website but it doesn't work. I looked up solutions but they all refer to using an actual string, whereas in my case I'm using a variable, and I can't make th...

stackoverflow.com