<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MongoDB &#8211; REONTOSANTA</title>
	<atom:link href="https://knowledge.reontosanta.com/archives/category/database/mongodb/feed" rel="self" type="application/rss+xml" />
	<link>https://knowledge.reontosanta.com</link>
	<description>Collection of personal knowledge</description>
	<lastBuildDate>Tue, 24 Jul 2018 06:27:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<atom:link rel='hub' href='https://knowledge.reontosanta.com/?pushpress=hub'/>
<site xmlns="com-wordpress:feed-additions:1">83369280</site>	<item>
		<title>MongoDBが起動しなくなった場合</title>
		<link>https://knowledge.reontosanta.com/archives/836</link>
					<comments>https://knowledge.reontosanta.com/archives/836#respond</comments>
		
		<dc:creator><![CDATA[mogice]]></dc:creator>
		<pubDate>Mon, 22 Feb 2016 01:53:38 +0000</pubDate>
				<category><![CDATA[MongoDB]]></category>
		<guid isPermaLink="false">http://knowledge.reontosanta.com/?p=836</guid>

					<description><![CDATA[MongoDBを強制終了した場合、再度起動することが出来なくなること&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>MongoDBを強制終了した場合、再度起動することが出来なくなることがある。</p>
<p>これは、正常に終了処理を行わなかった場合にmongod.lokというファイルが残り、起動が出来なくなる仕様によるもの。</p>
<p>repairコマンドを実行することで、上記の状態を解消することができる。</p>
<p>尚、lockファイルはrepairコマンドを実行することで削除される。</p>
<p>※削除されない場合は、手動で削除</p>
<p>&nbsp;</p>
<h2>repairコマンド実行</h2>
<p>以下のようにrepairコマンドを実行する。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; mongod --dbpath=/var/db/mongodb --repair</pre><p>※dbpathはデータベースがある場所</p>
<p>&nbsp;</p>
<div class="knowl-content" style="margin-top: 40px;" id="knowl-849413989"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="4196732648" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><h2>MongoDB再起動</h2>
<p>改めてMongoDBを起動する。</p>
<div class="knowl-after-content-ad" style="margin-top: 40px;" id="knowl-3633197641"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="2719999442" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><div class="knowl-after-content-relation" id="knowl-3681959851"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="7848218644" 
data-ad-format="autorelaxed"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://knowledge.reontosanta.com/archives/836/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">836</post-id>	</item>
		<item>
		<title>MongoDBクライアントの基本的なコマンド</title>
		<link>https://knowledge.reontosanta.com/archives/493</link>
					<comments>https://knowledge.reontosanta.com/archives/493#respond</comments>
		
		<dc:creator><![CDATA[mogice]]></dc:creator>
		<pubDate>Sat, 20 Jun 2015 15:15:23 +0000</pubDate>
				<category><![CDATA[MongoDB]]></category>
		<guid isPermaLink="false">http://knowledge.reontosanta.com/?p=493</guid>

					<description><![CDATA[起動と終了 ・起動 [crayon-68477848d7c40169&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<h2>起動と終了</h2>
<p>・起動</p><pre class="urvanov-syntax-highlighter-plain-tag">$ mongo</pre><p>&nbsp;</p>
<p>・終了</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; exit;</pre><p>&nbsp;</p>
<div class="knowl-content" style="margin-top: 40px;" id="knowl-2874559825"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="4196732648" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><h2>データベースの操作</h2>
<p>・DBの一覧表示</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; show dbs;
admin (empty)
local 0.078GB</pre><p>&nbsp;</p>
<p>・DBの選択</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; use local;</pre><p>&nbsp;</p>
<p>・DBの作成</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; use sample;
&gt; db.createCollection("members");</pre><p>データベース名：sampleを作成。</p>
<p>※コレクションやドキュメントを作成して初めてDBが生成される。</p>
<p>&nbsp;</p>
<p>・DBの削除</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.dropDatabase();</pre><p>&nbsp;</p>
<p>・DBのコピー</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.copyDatabase("コピー元DB名", "コピー先DB名");</pre><p>&nbsp;</p>
<h2>コレクションの操作</h2>
<p>・コレクションの生成</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.createCollection("members");</pre><p>&nbsp;</p>
<p>・コレクションの表示</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; show collections;</pre><p>&nbsp;</p>
<p>・コレクションの削除</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.drop();</pre><p>&nbsp;</p>
<p>・コレクション名の変更</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.renameCollection("members2");</pre><p>&nbsp;</p>
<h2>ドキュメントの操作</h2>
<p>・データのインサート</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.insert({"name":"hogefuga", "email":"hogefuga@hogefuga.jp", "age":20});</pre><p>コレクション名：membersに名前とアドレスをインサート。</p>
<p>&nbsp;</p>
<p>・データの一覧取得</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.find();</pre><p>&nbsp;</p>
<p>・データの削除</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.remove({});</pre><p>&nbsp;</p>
<h2>検索</h2>
<p>・条件付き検索(年齢が20歳のものだけ)</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.find({"age":20});</pre><p>&nbsp;</p>
<p>・条件付き検索(年齢が20歳の名前を取得)</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.find({"age":20}, {"name":true});</pre><p>&nbsp;</p>
<p>・条件付き検索(年齢が20歳以外の人)</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.find({"age":{$ne:20}});</pre><p>$ne はnot equal。</p>
<p>&nbsp;</p>
<p>・条件付き検索(年齢が20より上の人)</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.find({"age":{$gt:20}});</pre><p>$gt　はgreater than。</p>
<p>その他にも<br />
$gte (greater than equal)：xx以上<br />
$lt (less than)：xxより小さい<br />
$lte (less than equal)：xx以下<br />
がある。</p>
<p>&nbsp;</p>
<p>・１件取得（条件指定）</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.findOne({"name":"fuga"});</pre><p>最初にヒットしたものが抽出される。</p>
<p>&nbsp;</p>
<p>・重複無しで検索（「name」で重複なしで抽出）</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.distinct("name");</pre><p>&nbsp;</p>
<p>・重複無し検索結果の個数</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.distinct("name").length;
2</pre><p>&nbsp;</p>
<h2>INSERT（新規追加）</h2>
<p>・ドキュメントの追加</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.insert({name:"fuga", age:22});</pre><p>&nbsp;</p>
<h2>UPDATE（更新）</h2>
<p>・既にデータがある場合</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.update({name:"fuga"}, {$set:{age:33}});</pre><p>&nbsp;</p>
<p>・新規にデータ（カラム）の追加</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.update({name:"fuga"}, {$set:{country:"japan"}});</pre><p>&nbsp;</p>
<p>・ドキュメント数の表示</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.members.count();</pre><p>&nbsp;</p>
<h2>日付（時刻）</h2>
<p>MongoDBではタイムゾーンを指定できない。</p>
<p>すべて、協定世界時（UTC）で表現される。</p>
<p>JSTの時刻を扱いたい場合は、mongoDBから取り出した時に+09:00する必要がある。</p>
<p>・日付（時刻）の新規追加</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.time.insert({name:"fuga", accessTime:new Date()});</pre><p>&nbsp;</p>
<p>・日付（時刻）をキーにした検索（2014/03/07/ 10:00:00 以降のもの）</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.time.find({accessTime:{$gte:ISODate("2014-03-07T10:00:00")}});</pre><p>&nbsp;</p>
<h2>その他</h2>
<p>・DBの状態確認</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.stats();
{
"db" : "mydb", ※ DB名
"collections" : 3, ※ コレクション数
"objects" : 6, ※ データ数
"avgObjSize" : 80,
"dataSize" : 480,
"storageSize" : 24576,
"numExtents" : 3,
"indexes" : 1,
"indexSize" : 8176,
"fileSize" : 67108864,
"nsSizeMB" : 16,
"dataFileVersion" : {
"major" : 4,
"minor" : 5
},
"extentFreeList" : {
"num" : 0,
"totalSize" : 0
},
"ok" : 1
}
&gt;</pre><p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="knowl-after-content-ad" style="margin-top: 40px;" id="knowl-4272143984"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="2719999442" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><div class="knowl-after-content-relation" id="knowl-3758209372"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="7848218644" 
data-ad-format="autorelaxed"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://knowledge.reontosanta.com/archives/493/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">493</post-id>	</item>
		<item>
		<title>MongoDBでデータの挿入・検索・更新・削除を行う</title>
		<link>https://knowledge.reontosanta.com/archives/491</link>
					<comments>https://knowledge.reontosanta.com/archives/491#respond</comments>
		
		<dc:creator><![CDATA[mogice]]></dc:creator>
		<pubDate>Sat, 20 Jun 2015 15:15:00 +0000</pubDate>
				<category><![CDATA[MongoDB]]></category>
		<guid isPermaLink="false">http://knowledge.reontosanta.com/?p=491</guid>

					<description><![CDATA[MongoDBはNoSQLと呼ばれるデータベースのひとつ。 NoSQ&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>MongoDBはNoSQLと呼ばれるデータベースのひとつ。</p>
<p>NoSQLは「Not Only SQL」の略語で、OracleやMySQL、PostgreSQL等のRDBMS(Relational Database Management System)とは違い、固定されたスキーマに縛られない、関係モデルの結合操作を利用しない、トランザクションを利用できない等の特徴がある。</p>
<p>NoSQL系データベースが有用な場面は、関係モデルを必要としないデータを扱うときや、大量のデータを扱う時。</p>
<p>MongoDBの特徴としては、ドキュメント指向と呼ばれるXMLやJSON等のようにスキーマレスでデータ構造が柔軟である点が上げられる。</p>
<p>また、MySQLやPostgerSQLと同じくオープンソースである。</p>
<p>今回は、最初からMongoDBがインストールされているCloud9上でMongoDBを利用してみる。</p>
<p>&nbsp;</p>
<h2>適当なプロジェクトを作成</h2>
<p>workspace直下にデータベース用のディレクトリを作成する。</p><pre class="urvanov-syntax-highlighter-plain-tag">$ mkdir db</pre><p>&nbsp;</p>
<div class="knowl-content" style="margin-top: 40px;" id="knowl-4163614415"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="4196732648" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><h2>MongoDBを起動</h2>
<p>コンソールの最後にwaiting for connections on port 27017と表示されれば起動成功。</p><pre class="urvanov-syntax-highlighter-plain-tag">$ mongod --nojournal --noprealloc --dbpath db</pre><p>&nbsp;</p>
<h2>MongoDBのコンソールに接続</h2>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">$ mongo
MongoDB shell version: 2.6.9
connecting to: test
&gt;</pre><p>MongoDBの構造は、RDBMSのデータベースに当たる部分は同じだが、テーブルに相当するものはコレクションと呼び、その中のレコードに相当するものをドキュメントと呼ぶ。</p>
<p>まずデータベースを作成し、次にコレクションを作成する。</p>
<p>コレクションに対してドキュメントの作成、参照、更新、削除を行っていく。</p>
<p>今回は「mydb」というデータベースを作成する。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; use mydb
switched to db mydb
&gt;</pre><p>useコマンドで使うデータベースを指定するだけで新たに作成出来る。</p>
<p>既存のデータベースをuseコマンドで指定するとそのデータベースを使う、という命令になる。</p>
<p>コレクションを作成し、同時にinsertコマンドでドキュメントを挿入する。</p>
<p>今回は「myinfo」という名前のコレクションを作成し、その中にデータを入れていく。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.myinfo.insert({"name":"Reon", "age":"20", "birthplace":"Tokyo", "hobby":["Reading", "drive"]})
WriteResult({ "nInserted" : 1 })
&gt;</pre><p>エラーが表示されなければ成功している。</p>
<p>もう一つドキュメントを挿入。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.myinfo.insert({"name":"Santa", "age":"18", "birthplace":"Kanagawa"})
WriteResult({ "nInserted" : 1 })
&gt;</pre><p>データ構造が先ほどと違っていても同じコレクションに問題なく保存出来る。</p>
<p>では次にfind()メソッドを使用して参照をする。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.myinfo.find()
{ "_id" : ObjectId("557f6da57919595c9df1b2fd"), "name" : "Reon", "age" : "20", "birthplace" : "Tokyo", "hobby" : [ "Reading", "drive" ] }
{ "_id" : ObjectId("557f6df27919595c9df1b2fe"), "name" : "Santa", "age" : "18", "birthplace" : "Kanagawa" }
&gt;</pre><p>先ほど入力したコレクションが参照できた。</p>
<p>findOne()メソッドを使用すると先頭のドキュメント一つのみを取得する。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.myinfo.findOne()
{
"_id" : ObjectId("557f6da57919595c9df1b2fd"),
"name" : "Reon",
"age" : "20",
"birthplace" : "Tokyo",
"hobby" : [
"Reading",
"drive"
]
}
&gt;</pre><p>&nbsp;</p>
<p>find()やfindOne()メソッドは条件検索も可能。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.myinfo.find({"name":"Reon"})
{ "_id" : ObjectId("557f6da57919595c9df1b2fd"), "name" : "Reon", "age" : "20", "birthplace" : "Tokyo", "hobby" : [ "Reading", "drive" ] }
&gt;</pre><p>&nbsp;</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.myinfo.findOne({"birthplace":"Kanagawa"})
{
"_id" : ObjectId("557f6df27919595c9df1b2fe"),
"name" : "Santa",
"age" : "18",
"birthplace" : "Kanagawa"
}
&gt;</pre><p>&nbsp;</p>
<p>次にデータの更新。</p>
<p>現在のデータでは「name」が「Santa」であるデータには「hobby」が無いので追加してみる。</p>
<p>データの更新にはupdate()メソッドを使用する。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.myinfo.update({name:"Santa"},{$set:{"hobby":["basketball", "Climbing"]}}, false, true)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
&gt;</pre><p>エラーが出ない場合、更新に成功している。</p>
<p>&nbsp;</p>
<hr />
<h2>update()メソッドの引数に関しての補足</h2>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">update(condition, operation, upsert, multi)</pre><p>condition: この引数の条件に一致するドキュメントを更新する</p>
<p>operation: この引数の内容で更新する(更新オプションとして$inc/$set/$push/$popなどのオペレーションがある)</p>
<p>upsert: この引数がtrueの時、conditionの条件に一致しない場合は新たにデータが登録される(insert()と同じ動作を行う)</p>
<p>multi: この引数がtrueの時、conditionの条件に一致したデータ全てを更新する</p>
<hr />
<p>&nbsp;</p>
<p>更新結果の確認。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.myinfo.find()
{ "_id" : ObjectId("557f6da57919595c9df1b2fd"), "name" : "Reon", "age" : "20", "birthplace" : "Tokyo", "hobby" : [ "Reading", "drive" ] }
{ "_id" : ObjectId("557f6df27919595c9df1b2fe"), "name" : "Santa", "age" : "18", "birthplace" : "Kanagawa", "hobby" : [ "basketball", "Climbing" ] }
&gt;</pre><p>「hobby」が追加されたことが確認できた。</p>
<p>&nbsp;</p>
<p>次は削除を行う。</p>
<p>「Reon」のデータを削除してみる。</p>
<p>データを削除する場合はremove()メソッドを使用する。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.myinfo.remove({name:"Reon"})
WriteResult({ "nRemoved" : 1 })
&gt;</pre><p>エラーが出ない場合、削除に成功している。</p>
<p>結果をfind()メソッドで確認してみる。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.myinfo.find()
{ "_id" : ObjectId("557f6df27919595c9df1b2fe"), "name" : "Santa", "age" : "18", "birthplace" : "Kanagawa", "hobby" : [ "basketball", "Climbing" ] }
&gt;</pre><p>「Reon」のドキュメントが削除されたことが確認できた。</p>
<p>ちなみにremove()メソッドの引数に何も入れない場合は、全てのドキュメントを削除するという命令になる。</p>
<p>その場合は空のコレクションのみが残った状態となる。</p>
<p>更にコレクションも削除したい場合はdrop()メソッドを使用する。</p><pre class="urvanov-syntax-highlighter-plain-tag">&gt; db.myinfo.drop()
true
&gt;</pre><p>drop()メソッドの場合は成功した場合trueと表示される。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="knowl-after-content-ad" style="margin-top: 40px;" id="knowl-3900095986"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="2719999442" 
data-ad-format="auto"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div><div class="knowl-after-content-relation" id="knowl-3303484038"><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8913642688016174" crossorigin="anonymous"></script><ins class="adsbygoogle" style="display:block;" data-ad-client="ca-pub-8913642688016174" 
data-ad-slot="7848218644" 
data-ad-format="autorelaxed"></ins>
<script> 
(adsbygoogle = window.adsbygoogle || []).push({}); 
</script>
</div>]]></content:encoded>
					
					<wfw:commentRss>https://knowledge.reontosanta.com/archives/491/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">491</post-id>	</item>
	</channel>
</rss>
