<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=BasicGuide_mongoDB</id>
	<title>BasicGuide mongoDB - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://workspace.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=BasicGuide_mongoDB"/>
	<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=BasicGuide_mongoDB&amp;action=history"/>
	<updated>2026-04-21T12:00:33Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://workspace.onionmixer.net/wiki/index.php?title=BasicGuide_mongoDB&amp;diff=1501&amp;oldid=prev</id>
		<title>Onionmixer: network 내용 추가</title>
		<link rel="alternate" type="text/html" href="https://workspace.onionmixer.net/wiki/index.php?title=BasicGuide_mongoDB&amp;diff=1501&amp;oldid=prev"/>
		<updated>2019-08-09T07:41:31Z</updated>

		<summary type="html">&lt;p&gt;network 내용 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==mongoDB 기초문서==&lt;br /&gt;
&lt;br /&gt;
===사전지식===&lt;br /&gt;
&lt;br /&gt;
# mongodb.conf 에서 bindIP 항목은 subnet 또는 netmask 단위로 open 이 불가능합니다.&lt;br /&gt;
## &amp;lt;pre&amp;gt;bindIp: [1.1.1.1, 2.2.2.2, 3.3.3.3]&amp;lt;/pre&amp;gt;&lt;br /&gt;
## ipV6 를 사용하는 경우라면 ipV6 의 문법에 따라 range 형태로 open 할 수 있지만, ipV4 는 불가능합니다.&lt;br /&gt;
## 0.0.0.0 을 값으로 사용하면 전체 open 됩니다. OS 에서 제공하는 방화벽을 통해 제어를 해야합니다.&lt;br /&gt;
## 기본 socket port 는 27017 입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mongoDB system 관리===&lt;br /&gt;
&lt;br /&gt;
====데이터베이스 관리====&lt;br /&gt;
&lt;br /&gt;
* db 생성 : &amp;#039;&amp;#039;&amp;#039;use PharoStudyMongoDB&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* db 확인 : &amp;#039;&amp;#039;&amp;#039;show databases&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* db 삭제 : &amp;#039;&amp;#039;&amp;#039;db.dropDatabase()&amp;#039;&amp;#039;&amp;#039; 또는 &amp;#039;&amp;#039;&amp;#039;db.PharoStudyMongoDB.drop()&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====db 에 사용자 추가====&lt;br /&gt;
&lt;br /&gt;
* 일단 use DB이름 으로 DB 를 사용하도록 지정하는것부터 해야한다(&amp;#039;&amp;#039;&amp;#039;use 명령&amp;#039;&amp;#039;&amp;#039;)&lt;br /&gt;
** 해당 collection 에 권한을 가지는 사용자를 생성하기&lt;br /&gt;
*** &amp;lt;pre&amp;gt;db.createUser({ user: &amp;#039;username&amp;#039;, pwd: &amp;#039;password&amp;#039;, roles: [&amp;#039;readWrite&amp;#039;] })&amp;lt;/pre&amp;gt;&lt;br /&gt;
** 사용자를 관리자권한으로 생성하기(mongoDB 전체에 영향을 끼치는 권한)&lt;br /&gt;
*** &amp;lt;pre&amp;gt;db.createUser({ user: &amp;#039;username&amp;#039;, pwd: &amp;#039;password&amp;#039;, roles: [&amp;#039;userAdminAnyDatabase&amp;#039;]})&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===mongoDB collection 다루기===&lt;br /&gt;
&lt;br /&gt;
====collection 생성====&lt;br /&gt;
&lt;br /&gt;
# collection 을 생성하는 가장 기초적인 방법&lt;br /&gt;
#* &amp;lt;pre&amp;gt;db.createCollection(&amp;quot;pharoTestCollection&amp;quot;);&amp;lt;/pre&amp;gt;&lt;br /&gt;
# collection 생성시 해당 collection 에 option 을 주는 방법&lt;br /&gt;
#* &amp;lt;pre&amp;gt;db.createCollection(&amp;quot;pharoTestCollection&amp;quot;, { capped : false, size : 6142800, max : 10000 });&amp;lt;/pre&amp;gt;&lt;br /&gt;
#** capped : true 인 경우 사이즈를 고정시켜, 초과되면 오래된 데이터부터 삭제. true 면 샤딩이 되지 않는다.&lt;br /&gt;
#** autoIndexId : id자동증가. 향후에 deprecate 될거라고 경고가 나온다(mongoDB 4.x)&lt;br /&gt;
#** size : 사이즈&lt;br /&gt;
#** max : 컬렉션에 들어갈 최대 개수&lt;br /&gt;
&lt;br /&gt;
====collecion 목록 확인====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;show collections&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====collection 삭제====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;db.pharoTestCollection.drop()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====collection 에 데이터 추가====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;db.pharoTestCollection.insert()&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====collection 에서 데이터 조회====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;db.pharoTestCollection.find({&amp;quot;country_string&amp;quot; : &amp;quot;South Korea&amp;quot;})&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====collection 에서 데이터 update(찾을인자,바꿀인자)====&lt;br /&gt;
&lt;br /&gt;
인자의 순서는 &amp;#039;&amp;#039;&amp;#039;찾을인자,바꿀인자&amp;#039;&amp;#039;&amp;#039; 순서입니다.&lt;br /&gt;
&lt;br /&gt;
* 조건에 맞는 데이터의 특정 field 만 데이터를 변경하는 경우&lt;br /&gt;
** &amp;lt;pre&amp;gt;db.pharoTestCollection.update({&amp;quot;user_name&amp;quot; : &amp;quot;Peter 1&amp;quot;}, {$set:{&amp;quot;date_of_join&amp;quot; : &amp;quot;09/08/2019&amp;quot;}}, {multi:true})&amp;lt;/pre&amp;gt;&lt;br /&gt;
* 조건에 맞는 데이터의 전체 JSON 데이터를 변경하는 경우&lt;br /&gt;
** &amp;lt;pre&amp;gt;db.pharoTestCollection.update({&amp;quot;user_name&amp;quot; : &amp;quot;Peter 1&amp;quot;}, { &amp;quot;country_string&amp;quot; : &amp;quot;South Korea&amp;quot;, &amp;quot;user_name&amp;quot; : &amp;quot;Peter 1&amp;quot; ,&amp;quot;date_of_join&amp;quot; : &amp;quot;09/08/2019&amp;quot;, &amp;quot;category_name&amp;quot; : [&amp;quot;MODERN MUSIC&amp;quot;, &amp;quot;CLASSICAL MUSIC&amp;quot;,&amp;quot;WESTERN MUSIC&amp;quot;] })&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====collection 에서 데이터 삭제====&lt;br /&gt;
&lt;br /&gt;
createCollection 에서 capped 가 false 인 경우에만 사용가능한 명령입니다.&lt;br /&gt;
&lt;br /&gt;
* 해당 collection 의 모든 데이터를 삭제하는 경우&lt;br /&gt;
** &amp;lt;pre&amp;gt;db.pharoTestCollection.remove({})&amp;lt;/pre&amp;gt;&lt;br /&gt;
* 해당 collection 에서 조건에 맞는 데이터를 &amp;#039;&amp;#039;&amp;#039;3개만&amp;#039;&amp;#039;&amp;#039; 지우는 경우&lt;br /&gt;
** &amp;lt;pre&amp;gt;db.pharoTestCollection.remove({&amp;quot;country_string&amp;quot; : &amp;quot;South Korea&amp;quot;}).limit(3)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====특정 collection 에 데이터 1개 추가====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;db.pharoTestCollection.insertOne( { &amp;quot;country_string&amp;quot; : &amp;quot;South Korea&amp;quot;, &amp;quot;user_name&amp;quot; : &amp;quot;Peter 1&amp;quot; ,&amp;quot;date_of_join&amp;quot; : &amp;quot;15/10/2010&amp;quot;, &amp;quot;category_name&amp;quot; : [&amp;quot;MODERN MUSIC&amp;quot;, &amp;quot;CLASSICAL MUSIC&amp;quot;,&amp;quot;WESTERN MUSIC&amp;quot;] } );&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==참고자료==&lt;br /&gt;
&lt;br /&gt;
* https://docs.ncloud.com/ko/database/database-10-3.html&lt;br /&gt;
* https://planbs.tistory.com/entry/MongoDB-인증authorization-추가하기&lt;br /&gt;
* https://docs.mongodb.com/manual/reference/built-in-roles/&lt;br /&gt;
* https://fors.tistory.com/403&lt;br /&gt;
* https://blog.ull.im/engineering/2019/04/05/mongodb-indexing-strategy.html&lt;br /&gt;
* https://jaehun2841.github.io/2019/02/20/2019-02-20-mongodb-1/#mongodb-crud-operation&lt;br /&gt;
* https://docs.mongodb.com/manual/core/replica-set-rollbacks/&lt;br /&gt;
* https://jaehun2841.github.io/2019/02/20/2019-02-20-mongodb-1/#insert-sql-vs-mongo-db-insert&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>