์ง๋ฆฌ๊ณต๊ฐ์ ๊ฒ์
์ด ํ์ด์ง์ ๋ด์ฉ
๊ฐ์
์ด ๊ฐ์ด๋์์๋ MongoDB Java ๋๋ผ์ด๋ฒ๋ก ์ง๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ ๋ฅผ ๊ฒ์ํ๋ ๋ฐฉ๋ฒ๊ณผ MongoDB์์ ์ง์ํ๋ ๋ค์ํ ์ง๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ ํ์์ ๋ํด ์์๋ณผ ์ ์์ต๋๋ค.
์ง๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ ์ง๊ตฌ ํ๋ฉด์ ์ง๋ฆฌ์ ์์น๋ฅผ ๋ํ๋ด๋ ๋ฐ์ดํฐ์ ๋๋ค. ์ง๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ํ๊ด ์์น
๊ตญ๊ฐ ๊ฒฝ๊ณ
์์ ๊ฑฐ ๋ผ์ด๋ฉ ๊ฒฝ๋ก
๋ด์์ ๋ฐ๋ ค๊ฒฌ ์ด๋ ๊ณต๊ฐ
์ง๊ตฌ์์ ์ขํ
์ง๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ MongoDB์ ์ ์ฅํ๊ณ ์ฟผ๋ฆฌํ๋ ค๋ฉด GeoJSON ์ ์ฌ์ฉํฉ๋๋ค. GeoJSON์ IETF(์ธํฐ๋ท ์์ง๋์ด๋ง ํ์คํฌํฌ์ค)์์ ๊ฐ๋ฐํ ๋ฐ์ดํฐ ํ์์ ๋๋ค.
GeoJSON ๋ด MongoDB ๋ณธ์ฌ์ ์์น๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"MongoDB Headquarters" : { "type": "point", "coordinates": [-73.986805, 40.7620853] }
GeoJSON์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ณต์ IETF ์ฌ์์ ์ฐธ์กฐํ์ธ์.
GeoJSON ์์น
์์น๋ ์ง๊ตฌ์์ ๋จ์ผ ์ฅ์๋ฅผ ๋ํ๋ด๋ฉฐ ์ฝ๋์ ๋์ธ ๊ฐ์ ์ซ์ ๊ฐ์ ํฌํจํ๋ ๋ฐฐ์ด๋ก ์กด์ฌํฉ๋๋ค.
์ฒซ ๋ฒ์งธ ์์น์ ๊ฒฝ๋(ํ์)
๋ ๋ฒ์งธ ์์น์ ์๋(ํ์)
์ธ ๋ฒ์งธ ์์น์ ๊ณ ๋(์ ํ ์ฌํญ)
์ค์
๊ฒฝ๋, ์๋ ์์
GeoJSON์ ์ขํ๋ฅผ ๊ฒฝ๋๊ฐ ๋จผ์ , ์๋๊ฐ ๋ ๋ฒ์งธ๋ก ์ ๋ ฌํฉ๋๋ค. ์ง๋ฆฌ์ ์ขํ๊ณ ๊ท์น์ ์ผ๋ฐ์ ์ผ๋ก ์๋๋ฅผ ๋จผ์ ๋์ดํ๊ณ ๊ฒฝ๋๋ฅผ ๋์ค์ ๋์ดํ๊ธฐ ๋๋ฌธ์ ์์ธ์ผ ์ ์์ต๋๋ค. ์์ ์ค์ธ ๋ค๋ฅธ ๋๊ตฌ๊ฐ ์ด๋ค ํ์์ ์ฌ์ฉํ๋์ง ํ์ธํ์ธ์. OpenStreetMap ๋ฐ Google Maps์ ๊ฐ์ด ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋๊ตฌ๋ ์ขํ๋ฅผ ์๋, ๊ฒฝ๋ ์์ผ๋ก ๋์ดํฉ๋๋ค.
GeoJSON ์ ํ
GeoJSON ๊ฐ์ฒด์ ์ ํ์ ๋ฐ๋ผ ๊ธฐํํ์ ๋ชจ์์ด ๊ฒฐ์ ๋ฉ๋๋ค. ๊ธฐํํ์ ๋ํ์ ์์น๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๋ค์์ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ GeoJSON ์ ํ๊ณผ ์ด๋ฅผ ์์น๋ก ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค:
Point
: ๋จ์ผ ์์น. ์ด๋ ์กฐ๊ฐ ์ ์์น ๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค.LineString
: ๋ ๊ฐ ์ด์์ ์์น๋ก ๊ตฌ์ฑ๋ ๋ฐฐ์ด ๋ก, ์ผ๋ จ์ ๋ผ์ธ ์ธ๊ทธ๋จผํธ๋ฅผ ํ์ฑํฉ๋๋ค. ์ด๋ ๋ง๋ฆฌ์ฅ์ฑ์ ๊ฒฝ๋ก๋ฅผ๋ํ๋ผ ์ ์์ต๋๋ค.Polygon
: ์ฒซ ๋ฒ์งธ ์์น์ ๋ง์ง๋ง ์์น๊ฐ ๋์ผํ์ฌ ์ผ๋ถ ๊ณต๊ฐ์ ๋๋ฌ์ธ๋ ์์น ๋ฐฐ์ด ์ ๋๋ค. ์ด๋ ๋ฐํฐ์นธ ์๊ตญ ๋ด์ ๋ ์๋ํ๋ผ ์ ์์ต๋๋ค.
MongoDB์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ์์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด GeoJSON ์๋ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
GeoJSON ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ๋ฌธ์ ์ฝ์
GeoJSON ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฌธ์ ๋ฅผ ์ฝ์
ํ๋ ค๋ฉด GeoJSON ๊ฐ์ด ํฌํจ๋ ๋ฌธ์ ๋ฅผ ๋ง๋ค๊ณ ๋ฌธ์ ๋ฅผ insertOne()
๋ฉ์๋์ ์ ๋ฌํฉ๋๋ค.
๋ค์ ์์ ์์๋ GeoJSON ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๋ location.geo
ํ๋ ๊ฐ ํฌํจ๋ ๋ฌธ์ ๋ฅผ ์ฝ์
ํฉ๋๋ค.
// Add your MongoCollection setup code here Point point = new Point(new Position(-74.0065, 40.7085)); Document theater = new Document("theaterId", 1203) .append("location", new Document("geo", point)); InsertOneResult result = collection.insertOne(theater);
๋ฌธ์ ์ฝ์ ์ ํ์ต ๋ณด๋ ค๋ฉด ์ฝ์ ์์ ๊ฐ์ด๋ ๋ฅผ ์ฐธ์กฐํ์ธ์.
Index
GeoJSON ํ์์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๋ ค๋ฉด GeoJSON ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ํ๋๋ฅผ 2dsphere
์ธ๋ฑ์ค์ ์ถ๊ฐํฉ๋๋ค. ๋ค์ ์ค๋ํซ์ Indexes
๋น๋๋ฅผ ์ฌ์ฉํ์ฌ location.geo
ํ๋์ 2dsphere
์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค.
// <MongoCollection setup code here> collection.createIndex(Indexes.geo2dsphere("location.geo"));
Indexes
๋น๋์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ธ๋ฑ์ค ๋น๋ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
2D ํ๋ฉด์ ์ขํ
2์ฐจ์ ์ ํด๋ฆฌ๋ ํ๋ฉด์ x
๋ฐ y
์ขํ๋ฅผ ์ฌ์ฉํ์ฌ ์ง๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. 2์ฐจ์ ํ๋ฉด์ ์ขํ๋ฅผ "๋ ๊ฑฐ์ ์ขํ ์"์ด๋ผ๊ณ ํฉ๋๋ค.
legacy coordinate pairs์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
"<field name>" : [ x, y ]
ํ๋๋ ์ฒซ ๋ฒ์งธ ๊ฐ์ด x
์ถ ๊ฐ์ ๋ํ๋ด๊ณ ๋ ๋ฒ์งธ ๊ฐ์ด y
์ถ ๊ฐ์ ๋ํ๋ด๋ ๋ ๊ฐ์ ๋ฐฐ์ด์ ํฌํจํด์ผ ํฉ๋๋ค.
๋ ๊ฑฐ์ ์ขํ๊ฐ ํฌํจ๋ ๋ฌธ์ ์ฝ์
๋ ๊ฑฐ์ ์ขํ ์์ ์ ์ฅํ๋ ๋ฌธ์ ๋ฅผ ์ฝ์
ํ๋ ค๋ฉด ํ๋ ์ ์ขํ ์ ๊ฐ์ ํ ๋นํ๋ ๋ฌธ์ ๋ฅผ ๋ง๋ญ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฌธ์ ๋ฅผ insertOne()
๋ฉ์๋์ ์ ๋ฌํฉ๋๋ค.
๋ค์ ์์ ์์๋ ๋ ๊ฑฐ์ ์ขํ ์์ด ํฌํจ๋ coordinates
ํ๋ ๊ฐ ํฌํจ๋ ๋ฌธ์ ๋ฅผ ์ฝ์
ํฉ๋๋ค.
// Add your MongoCollection setup code here Document theater = new Document("theaterId", 1204) .append("coordinates", Arrays.asList(-73.9862, 40.7311)); InsertOneResult result = collection.insertOne(theater);
๋ฌธ์ ์ฝ์ ์ ํ์ต ๋ณด๋ ค๋ฉด ์ฝ์ ์์ ๊ฐ์ด๋ ๋ฅผ ์ฐธ์กฐํ์ธ์.
Index
๋ ๊ฑฐ์ ์ขํ ์์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๋ ค๋ฉด ๋ ๊ฑฐ์ ์ขํ ์์ด ํฌํจ๋ ํ๋๋ฅผ 2d
์ธ๋ฑ์ค์ ์ถ๊ฐํด์ผ ํฉ๋๋ค. ๋ค์ ์ค๋ํซ์ Indexes
๋น๋๋ฅผ ์ฌ์ฉํ์ฌ coordinates
ํ๋์ 2d
์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค.
// <MongoCollection setup code here> collection.createIndex(Indexes.geo2d("coordinates"));
Indexes
๋น๋์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ธ๋ฑ์ค ๋น๋ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
MongoDB Server legacy coordinate pairs๋ ๊ฑฐ์ ์ขํ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ legacy coordinate pairs ๋ํ ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
ํ
์ง์๋๋ ์ฐ์ฐ์
๊ตฌํ(2dsphere
) ๋ฐ ํ๋ฉด(2d
) ์ธ๋ฑ์ค๋ ์ ๋ถ๋ ์๋์ง๋ง ์ผ๋ถ ๋์ผํ ์ฟผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ง์ํฉ๋๋ค. ์ ์ฒด ์ฐ์ฐ์ ๋ชฉ๋ก๊ณผ ์ธ๋ฑ์ค ํธํ์ฑ์ ์ง๋ฆฌ ๊ณต๊ฐ์ ์ฟผ๋ฆฌ ์๋ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
์ง๋ฆฌ๊ณต๊ฐ ์ฟผ๋ฆฌ
์ง๋ฆฌ ๊ณต๊ฐ์ ์ฟผ๋ฆฌ๋ ์ฟผ๋ฆฌ ์ฐ์ฐ์์ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์์ธ GeoJSON ๋ํ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์ฟผ๋ฆฌ ์ฐ์ฐ์
์ง๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๋ ค๋ฉด ๋ค์ ์ฟผ๋ฆฌ ์ฐ์ฐ์ ์ค ํ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค:
$near
$geoWithin
$nearSphere
$geoIntersects
2dsphere ์ธ๋ฑ์ค ํ์
Filters
๋น๋ ํด๋์ค์ near()
, geoWithin()
, nearSphere()
๋ฐ geoIntersects()
์ ํธ๋ฆฌํฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ MongoDB Java ๋๋ผ์ด๋ฒ์์ ์ด๋ฌํ ์ฟผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
์ง๋ฆฌ ๊ณต๊ฐ์ ์ฟผ๋ฆฌ ์ฐ์ฐ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ง๋ฆฌ ๊ณต๊ฐ์ ์ฟผ๋ฆฌ ์๋ ํญ๋ชฉ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Filters
์ ๋ํ ์์ธํ ๋ด์ฉ์ ํํฐ ๋น๋ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์
์ง๋ฆฌ ๊ณต๊ฐ์ ์ฟผ๋ฆฌ์์ ์ฌ์ฉํ ํํ๋ฅผ ์ง์ ํ๋ ค๋ฉด MongoDB Java ๋๋ผ์ด๋ฒ์ Position
, Point
, LineString
๋ฐ Polygon
ํด๋์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
MongoDB Java ๋๋ผ์ด๋ฒ์์ ์ฌ์ฉํ ์ ์๋ GeoJSON ๋ชจ์์ ์ ์ฒด ๋ชฉ๋ก์ GeoJSON ํจํค์ง ๋ฅผ ์ฐธ์กฐํ์ธ์. API ๋ฌธ์.
์์
๋ค์ ์์์์๋ MongoDB Atlas ์ํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋น ๋ฅธ ์์ ๊ฐ์ด๋์์ ํ๋ฆฌ ํฐ์ด Atlas ํด๋ฌ์คํฐ๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ๊ณผ ์ํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณผ ์ ์์ต๋๋ค.
์ด ์์์๋ ์ํ ๋ฐ์ดํฐ ์งํฉ์ sample_mflix
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ theaters
์ปฌ๋ ์
์ ์ฌ์ฉํฉ๋๋ค. 2} ์ปฌ๋ ์
์ ํ๋์ theaters
2dsphere
์ธ๋ฑ์ค๊ฐ ํฌํจ๋์ด location.geo
์์ต๋๋ค.
์์ ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ๊ฐ ํ์ํฉ๋๋ค.
import java.util.Arrays; import org.bson.conversions.Bson; import com.mongodb.client.model.geojson.Point; import com.mongodb.client.model.geojson.Polygon; import com.mongodb.client.model.geojson.Position; import static com.mongodb.client.model.Filters.near; import static com.mongodb.client.model.Filters.geoWithin; import static com.mongodb.client.model.Projections.fields; import static com.mongodb.client.model.Projections.include; import static com.mongodb.client.model.Projections.excludeId;
์ฌ๊ธฐ์์ Github์์ ์์ ์ ์์ค ์ฝ๋๋ฅผ์ฐพ์ ์ ์์ต๋๋ค.
๊ทผ์ ์ฑ ๊ธฐ์ค ์ฟผ๋ฆฌ
์ ์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฒ๋ถํฐ ๊ฐ์ฅ ๋จผ ๊ฒ ์์ผ๋ก ๋ฌธ์๋ฅผ ๊ฒ์ํ๊ณ ๋ฐํํ๋ ค๋ฉด Filters
๋น๋ ํด๋์ค์ near()
์ ์ ์ ํธ๋ฆฌํฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. near()
๋ฉ์๋๋ $near
์ฟผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
๋ค์ ์์ 10,000
๋ 5,000
์ผํธ๋ด ๊ณต์์ ๊ทธ๋ ์ดํธ ๋ก ์์ ~ ๋ฏธํฐ ๊ฑฐ๋ฆฌ์์๋ ๊ทน์ฅ์ ์ฟผ๋ฆฌํฉ๋๋ค.
// Add your MongoClient setup code here MongoDatabase database = mongoClient.getDatabase("sample_mflix"); MongoCollection<Document> collection = database.getCollection("theaters"); Point centralPark = new Point(new Position(-73.9667, 40.78)); // Creates a query that matches all locations between 5,000 and 10,000 meters from the specified Point Bson query = near("location.geo", centralPark, 10000.0, 5000.0); // Creates a projection to include only the "location.address.city" field in the results Bson projection = fields(include("location.address.city"), excludeId()); // Prints the projected field of the results from the geospatial query as JSON collection.find(query) .projection(projection) .forEach(doc -> System.out.println(doc.toJson()));
์์ ์ฝ๋์ ์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค.
{"location": {"address": {"city": "Bronx"}}} {"location": {"address": {"city": "New York"}}} {"location": {"address": {"city": "New York"}}} {"location": {"address": {"city": "Long Island City"}}} {"location": {"address": {"city": "New York"}}} {"location": {"address": {"city": "Secaucus"}}} {"location": {"address": {"city": "Jersey City"}}} {"location": {"address": {"city": "Elmhurst"}}} {"location": {"address": {"city": "Flushing"}}} {"location": {"address": {"city": "Flushing"}}} {"location": {"address": {"city": "Flushing"}}} {"location": {"address": {"city": "Elmhurst"}}}
ํ
ํฅ๋ฏธ๋ก์ด ์ฌ์ค
MongoDB๋ GPS ์ธ๊ณต์์ฑ ๊ณผ ๋์ผํ ์ฐธ์กฐ ์์คํ ์ ์ฌ์ฉํ์ฌ ์ง๊ตฌ์ ๊ธฐํํ์ ๊ณ์ฐํฉ๋๋ค.
$near
์ฐ์ฐ์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ $near์ ๋ํ ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Filters
์ ๋ํ ์์ธํ ๋ด์ฉ์ ํํฐ ๋น๋ ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฒ์ ๋ด ์ฟผ๋ฆฌ
์ง์ ๋ ๋ชจ์ ๋ด์์ ์ง๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ ค๋ฉด Filters
๋น๋ ํด๋์ค์ geoWithin()
์ ์ ์ ํธ๋ฆฌํฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. geoWithin()
๋ฉ์๋๋ $geoWithin
์ฟผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
๋ค์ ์์์๋ ๋กฑ ์์ผ๋๋์ ํ ๊ตฌ์ญ์ ์๋ ์ํ๊ด์ ๊ฒ์ํฉ๋๋ค.
// Add your MongoCollection setup code here // Creates a set of points that defines the bounds of a geospatial shape Polygon longIslandTriangle = new Polygon(Arrays.asList(new Position(-72, 40), new Position(-74, 41), new Position(-72, 39), new Position(-72, 40))); // Creates a projection to include only the "location.address.city" field in the results Bson projection = fields(include("location.address.city"), excludeId()); // Creates a query that matches documents containing "location.geo" values within the specified bounds Bson geoWithinComparison = geoWithin("location.geo", longIslandTriangle); // Prints the projected field of the results from the geolocation query as JSON collection.find(geoWithinComparison) .projection(projection) .forEach(doc -> System.out.println(doc.toJson()));
์์ ์ฝ๋์ ์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค.
{"location": {"address": {"city": "Baldwin"}}} {"location": {"address": {"city": "Levittown"}}} {"location": {"address": {"city": "Westbury"}}} {"location": {"address": {"city": "Mount Vernon"}}} {"location": {"address": {"city": "Massapequa"}}}
๋ค์ ๊ทธ๋ฆผ์ longIslandTriangle
๋ณ์๋ก ์ ์๋ ๋ค๊ฐํ๊ณผ ์ฟผ๋ฆฌ์์ ๋ฐํ๋ ์ํ๊ด ์์น๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ณด์ฌ์ค๋๋ค.
$geoWithin
์ฐ์ฐ์์ ๋ํ ์์ธํ ๋ด์ฉ์ $geoWithin์ ๋ํ ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์ .
์ฟผ๋ฆฌ ์ ์ฌ์ฉํ ์ ์๋ ์ฐ์ฐ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ง๋ฆฌ ๊ณต๊ฐ์ ์ฟผ๋ฆฌ ์ฐ์ฐ์์ ๋ํ MongoDB Server ๋งค๋ด์ผ ํ์ด์ง๋ฅผ์ฐธ์กฐํ์ธ์.