はじめに
MongoDB のシェルを使った基本的な操作を紹介したあと、Python プログラムを使って目的のデータを検索したりデータを追加したりするサンプルを紹介します。
Mongo シェルによる基本操作
Mongo シェルの起動
「localhost:27017」は省略できます。別のホスト、ポートで稼働する MongoDB サーバーに接続するには、この引数を変更してください。
mongo localhost:27017
データベースの一覧表示
> show databases
データベースの選択
> use mydb
switched to db mydb
データベース内のコレクションの一覧表示
> show collections
system.indexes
コレクションへのデータ追加
> db.mycollection.save({
... 'name': 'sales_log_1',
... 'items': {
... 'apple': 1,
... 'orange': 5
... }
... })
WriteResult({ "nInserted" : 1 })
コレクションに含まれるデータ件数の表示
> db.mycollection.count()
1
コレクションのデータ1件を表示
> db.mycollection.findOne()
{
"_id" : ObjectId("5604e5980567ec17891193dc"),
"name" : "sales_log_1",
"items" : {
"apple" : 1,
"orange" : 5
}
}
コレクションからデータを検索
> db.mycollection.find({'items.orange': {'$gte': 5}})
{ "_id" : ObjectId("5604e5980567ec17891193dc"), "name" : "sales_log_1", "items" : { "apple" : 1, "orange" : 5 } }
> db.mycollection.find({'items.apple': {'$gte': 5}})
( no result )
コレクションの全データ削除
コレクション自体は削除しません。
> db.mycollection.remove({})
コレクションの削除
コレクション自体も削除します。
> db.mycollection.drop()
true
> db.mycollection.drop()
false (削除済みの場合はfalseになる)
データベースの削除
> use mydb
switched to db mydb
> db.dropDatabase()
{ "dropped" : "mydb", "ok" : 1 }
> use mydb
switched to db mydb (この時点ではまだデータベースの実体がない)
> db.dropDatabase()
{ "ok" : 1 } (実体がなく、削除するものがない)
Python プログラムによる操作
pymongo モジュールを使用して MongoDB サーバーに接続する場合のサンプルです。
2件のデータを登録したあと、簡単にデータを確認して items 内のフルーツについてそれぞれの合計を計算しています。
$ python
>>> import pymongo
>>> mongoclient = pymongo.MongoClient()
>>> mongoclient.mydb.mycollection.save({
... 'name' : 'sales_log_1',
... 'items' : {
... 'apple' : 1,
... 'orange' : 5
... }
... })
...
ObjectId('5604ea0b0116af699b1bb46e')
>>> mongoclient.mydb.mycollection.save({
... 'name' : 'sales_log_2',
... 'items' : {
... 'orange' : 3,
... 'peach' : 3
... }
... })
...
ObjectId('5604ea270116af699b1bb46f')
>>> mongoclient.mydb.mycollection.count()
2
>>> cursor = mongoclient.mydb.mycollection.find()
>>> for data in cursor:
... data
...
{'_id': ObjectId('5604ea0b0116af699b1bb46e'), 'name': 'sales_log_1', 'items': {'orange': 5, 'apple': 1}}
{'_id': ObjectId('5604ea270116af699b1bb46f'), 'name': 'sales_log_2', 'items': {'orange': 3, 'peach': 3}}
>>> items = {}
>>> cursor = mongoclient.mydb.mycollection.find()
>>> for data in cursor:
... for a_item_name in data['items']:
... if (a_item_name in items) is False:
... items[a_item_name] = 0
... items[a_item_name] += data['items'][a_item_name]
...
>>> items
{'orange': 8, 'apple': 1, 'peach': 3}