恥ずかしくて今さら聞けない、GMongo講座 1
です。
みなさんお間違えのないようにお願いします。
GMongo
って何ぞ?という方もいると思いますので、とりあえず、簡単に説明すると、Groovyからmongodbにつなげるthin ドライバーです。
もっと詳しく知りたい?ググ
導入
GitHubのアドレスはhttps://github.com/poiati/gmongoです。ここからzipダウンロードしてpathを通してやってください。
なお、このライブラリーは標準のmavenリポジトリーにも登録されています。
mavenから使いたい場合は、次のように記述すると使えます。
<dependencies>
<dependency>
<groupId>com.gmongo</groupId>
<artifactId>gmongo</artifactId>
<version>0.9.2</version>
</dependency>
</dependencies>
おっと、私のように頭がゆとり系の人にはmavenなんて難しいことを書いてはダメでした。
@Grapes
では次のような感じです。
@Grapes(
@Grab(group='com.gmongo', module='gmongo', version='0.9.2')
)
Gradle
では次のような感じになります。
repositories {
mavenCentral()
}
dependencies {
groovy : 'com.gmongo:gmongo:0.9.2'
}
ちなみにJavaとの親和性の高いGroovyですから、Groovyで書かれたライブラリを使ってJavaで開発なんてこともできると思います(テキトー)
では、昨日と同じような感じで使ってみたいと思います。
クライアント起動インスタンス化
ホスト名とポート番号を渡してやるだけでインスタンス化できます。
MongoTest.groovy
import com.gmongo.GMongo
import org.junit.Before
@Before
public void setUp() {
def mongo = new GMongo('localhost', 27017)
}
これだけで、mongodbとの接続が完了します。
DBの選択
使うDBを選択します。
昨日の
use db名称
ですね。これは
GMongo
の次のメソッドを用いることで、DB
インスタンスを取得できます。MongoTest.groovy
import com.gmongo.GMongo
import org.junit.Before
import com.mongodb.DB
@Before
public void setUp() {
def mongo = new GMongo('localhost', 27017)
def db = mongo.getDB('mydb')
}
レコードの登録
SQLで言うところの
insert
ですね。昨日の例では、
mydb.items
というエンティティ(?)に入れましたので、同様のコードを書きたいと思います。まずはエンティティの取得から。
MongoTest.groovy
import com.gmongo.GMongo
import org.junit.Before
import com.mongodb.DB
@Before
public void setUp() {
def mongo = new GMongo('localhost', 27017)
def db = mongo.getDB('mydb')
def entity = db['items']
}
えっ、これだけ!?
そうなんです。これだけなんです。
さすがGroovy、Groovyかわいいよ、Groovy。
あとは、この
entity
にデータを入れていけば良いのです。昨日の例ではここで登録するデータの形式はJSONでしたが、
さすがGroovy、
Hash
でデータを入れられます。MongoTest.groovy
import com.gmongo.GMongo
import org.junit.Before
import com.mongodb.DB
@Before
public void setUp() {
def mongo = new GMongo('localhost', 27017)
def db = mongo.getDB('mydb')
def entity = db['items']
10.times {
entity.insert([type : 'data', value : it])
}
}
さて、ではデータが登録されているかどうかテストしてみましょう。
MongoTest.groovy
import org.junit.Test
import com.gmongo.GMongo
import org.junit.Before
import com.mongodb.DB
class MongoTest {
@Before
public void setUp() {
def mongo = new GMongo('localhost', 27017)
def db = mongo.getDB('mydb')
def entity = db['items']
10.times {
entity.insert([type : 'data', value : it])
}
}
@Test
public void testSetUp() {
def mongo = new GMongo('localhost', 27017)
def db = mongo.getDB('mydb')
def list = db.items.find()
assert list.size() == 10
}
}
では、テスト実行!
はい、通りました!
片付け
テストを通ったのは良いのですが、これこのままにしておくと、
後でテストこけます。
なので、テストデータを作成したら、
@After
を使ってデータを削除しておきましょう。MongoTest.groovy
import org.junit.Test
import com.gmongo.GMongo
import org.junit.Before
import com.mongodb.DB
import org.junit.After
class MongoTest {
@Before
public void setUp() {
def mongo = new GMongo('localhost', 27017)
def db = mongo.getDB('mydb')
def entity = db['items']
10.times {
entity.insert([type : 'data', value : it])
}
}
@Test
public void testSetUp() {
def mongo = new GMongo('localhost', 27017)
def db = mongo.getDB('mydb')
def list = db.items.find()
assert list.size() == 10
}
@After
public void tearDown() {
def mongo = new GMongo('localhost', 27017)
def db = mongo.getDB('mydb')
db.items.remove([:])
}
}
ちなみに、
@After
で実行したコマンドはmongodb
における次のコマンドと同じです。
> db.items.remove({})
>
はい、以上、今日はここまで。
次回はまたmongodbに戻ります。
0 件のコメント:
コメントを投稿