ラベル PyMongo の投稿を表示しています。 すべての投稿を表示
ラベル PyMongo の投稿を表示しています。 すべての投稿を表示

2011年6月11日土曜日

PyMongoでJavaScriptを評価する

PyMongoでJavaScriptを評価するには、以下のコードのようにevalを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
# JavaScriptを評価する
print(conn.local.eval("function inc(x){return parseInt(x)+1;}", [1]))

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年6月9日木曜日

PyMongoでインデックスを削除する

PyMongoでインデックスを削除するには、以下のコードのようにdrop_indexを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("members")
col = conn.local.members
# インデックスを作成する
indexname = col.create_index("name")
# インデックスを削除する
col.drop_index(indexname)
# インデックスの情報を表示する
for idx in col.index_information():
 print(idx)

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年6月7日火曜日

PyMongoでインデックスの情報を表示する

PyMongoでインデックスの情報を表示するには、以下のコードのようにindex_informationを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("members")
col = conn.local.members
# インデックスを作成する
col.create_index("name")
# インデックスの情報を表示する
for idx in col.index_information():
 print(idx)

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年6月5日日曜日

PyMongoでデータを削除する

PyMongoでデータを削除するには、以下のコードのようにremoveを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("members")
col = conn.local.members
col.insert({"name":"robert", "age":25})
col.insert({"name":"brian", "age":25})
# robertを削除
col.remove({"name":"robert"})
# データを全件表示
for obj in col.find():
 print str(obj[u'name']) + ":" + str(obj[u"age"])

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年6月3日金曜日

PyMongoでデータを更新する

PyMongoでデータを更新するには、以下のコードのようにupdateを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("members")
col = conn.local.members
col.insert({"name":"robert", "age":25})
col.insert({"name":"brian", "age":25})
# robertの年齢を更新
col.update({"name":"robert"}, {"name":"robert", "age":27})
# データを全件表示
for obj in col.find():
 print str(obj[u'name']) + ":" + str(obj[u"age"])

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年6月1日水曜日

PyMongoでuniqueなインデックスを作成する

PyMongoでuniqueなインデックスを作成するには、以下のコードのようにunique=Trueを指定してcreate_indexを実行します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("members")
col = conn.local.members
# Uniqueなインデックスを作成する
col.create_index("name", unique=True)
col.insert({"name":"robert", "age":25})
col.insert({"name":"brian", "age":25})
# キー重複をおこす
try:
 col.insert({"name":"robert", "age":21}, safe=True)
except errors.DuplicateKeyError:
 print("Duplicated Key.")
# コレクションには、2件のみが含まれる
for obj in col.find():
 print obj

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月30日月曜日

PyMongoでGroup byした最大値を求める

PyMongoでGroup byした最大値を求めるには、以下のコードのようにJavaScript Functionを使用して最大値を求めます。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("sales_by_year_area")
col = conn.local.sales_by_year_area
# データをinsert
col.insert({"year":2009, "area":"North", "sales":100})
col.insert({"year":2009, "area":"South", "sales":150})
col.insert({"year":2010, "area":"North", "sales":200})
col.insert({"year":2010, "area":"South", "sales":250})
col.insert({"year":2011, "area":"North", "sales":300})
col.insert({"year":2011, "area":"South", "sales":350})
# 地域毎の年間最高売上を表示する
for obj in col.group(
key={"area":True},
condition={},
initial={"cmax":0},
reduce="function(obj,prev){if(prev.cmax < obj.sales)prev.cmax=obj.sales;}"):
 print str(obj[u"area"]) + ":" + str(obj[u"cmax"])

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月28日土曜日

PyMongoでコレクションをリネームする

PyMongoでコレクションをリネームするには、以下のコードのようにrenameを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
# コレクションをリネームする
conn.local.members.rename("platinum_members")

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月26日木曜日

PyMongoでdistinctした値を取得する

PyMongoでdistinctした値を取得するには、以下のコードのようにdistinctを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("sales_by_year_area")
col = conn.local.sales_by_year_area
# データをinsert
col.insert({"year":2009, "area":"North", "sales":100})
col.insert({"year":2009, "area":"South", "sales":150})
col.insert({"year":2010, "area":"North", "sales":200})
col.insert({"year":2010, "area":"South", "sales":250})
col.insert({"year":2011, "area":"North", "sales":300})
col.insert({"year":2011, "area":"South", "sales":350})
# distinctした値を取得
for obj in col.distinct("year"):
 print obj

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月24日火曜日

PyMongoでGroup byした総和を求める

PyMongoでGroup byした総和を求めるには、以下のコードのようにgroupを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("sales_by_year_area")
col = conn.local.sales_by_year_area
# データをinsert
col.insert({"year":2009, "area":"North", "sales":100})
col.insert({"year":2009, "area":"South", "sales":150})
col.insert({"year":2010, "area":"North", "sales":200})
col.insert({"year":2010, "area":"South", "sales":250})
col.insert({"year":2011, "area":"North", "sales":300})
col.insert({"year":2011, "area":"South", "sales":350})
# 地域毎の総売上を表示する
for obj in col.group(
key={"area":True},
condition={},
initial={"csum":0},
reduce="function(obj,prev){prev.csum += obj.sales;}"):
 print str(obj[u"area"]) + ":" + str(obj[u"csum"])

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月22日日曜日

PyMongoでin句で指定した値に一致するデータを抽出する

PyMongoでin句で指定した値に一致するデータを抽出するには、以下のコードのように$inを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("sales_by_year")
col = conn.local.sales_by_year
# データをinsert
col.insert({"year":2006, "sales":100})
col.insert({"year":2007, "sales":200})
col.insert({"year":2008, "sales":300})
col.insert({"year":2009, "sales":400})
col.insert({"year":2010, "sales":500})
col.insert({"year":2011, "sales":600})
# 2010年と2011年のデータを表示する
for obj in col.find({"year":{"$in":[2010, 2011]}}):
 print str(obj[u'year']) + ":" + str(obj[u'sales'])
print("---")
# JavaScript Expressionで2010年と2011年のデータを表示する
for obj in col.find({"$where":"this.year in {2010:1, 2011:1}"}):
 print str(obj[u'year']) + ":" + str(obj[u'sales'])

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月20日金曜日

PyMongoでnot equalを条件としてデータを抽出する

PyMongoでnot equalを条件としてデータを抽出するには、以下のコードのように$neを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("sales_by_year")
col = conn.local.sales_by_year
# データをinsert
col.insert({"year":2006, "sales":100})
col.insert({"year":2007, "sales":200})
col.insert({"year":2008, "sales":300})
col.insert({"year":2009, "sales":400})
col.insert({"year":2010, "sales":500})
col.insert({"year":2011, "sales":600})
# 2006年以外のデータを表示する
for obj in col.find({"year":{"$ne":2006}}):
 print(str(obj[u'year']) + ":" + str(obj[u'sales']))
print("---")
# JavaScript Expressionで条件を記述
for obj in col.find({"$where":"this.year != 2006"}):
 print(str(obj[u'year']) + ":" + str(obj[u'sales']))

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月18日水曜日

PyMongoで剰余を条件としてデータを抽出する

PyMongoで剰余を条件としてデータを抽出するには、以下のコードのように$modを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("sales_by_year")
col = conn.local.sales_by_year
# データをinsert
col.insert({"year":2006, "sales":100})
col.insert({"year":2007, "sales":200})
col.insert({"year":2008, "sales":300})
col.insert({"year":2009, "sales":400})
col.insert({"year":2010, "sales":500})
col.insert({"year":2011, "sales":600})
# 偶数年のデータを表示する
for obj in col.find({"year":{"$mod":[2,0]}}):
 print(str(obj[u'year']) + ":" + str(obj[u'sales']))
print("---")
# JavaScript Expressionで偶数年のデータを表示する
for obj in col.find({"$where":"this.year % 2 == 0"}):
 print(str(obj[u'year']) + ":" + str(obj[u'sales']))

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月16日月曜日

PyMongoで指定のフィールドが存在しないオブジェクトを検索する

PyMongoで指定のフィールドが存在しないオブジェクトを検索するには、以下のコードのように$exists演算子を使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("members")
col = conn.local.members
# メンバーをinsert
col.insert({"name":"brian", "age":"21"})
col.insert({"name":"bob", "age":"22"})
col.insert({"name":"rob", "age":"23"})
col.insert({"name":"brandy"})
# フィールドが存在しないメンバーを探す
for obj in col.find({"age":{"$exists":False}}):
 print(obj)
print("---")
# JavaScript Expressionでフィールドが存在しないメンバーを探す
for obj in col.find({"$where":"'age' in this == false"}):
 print(obj)

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月14日土曜日

PyMongoで要素数を取得する

PyMongoで要素数を取得するには、以下のコードのようにcountを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
conn.local.drop_collection("members")
col = conn.local.members
# メンバーをinsert
col.insert({"name":"brian", "age":"21"})
col.insert({"name":"bob", "age":"22"})
col.insert({"name":"rob", "age":"23"})
# メンバーの数
print("total_count:" + str(col.count()))
# 22才以上のメンバーの数(cursor.count())
print(col.find({"age":{"$gte":"22"}}).count())

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月10日火曜日

PyMongoでプロファイリングレベルを設定する

PyMongoでプロファイリングレベルを設定するには、以下のコードのようにset_profiling_levelを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
db = conn.local
# プロファイリングレベルを設定
db.set_profiling_level(ALL)
 
補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年5月2日月曜日

PyMongoでプロファイリングレベルを取得する

PyMongoでプロファイリングレベルを取得するには、以下のコードのようにprofiling_levelを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
db = conn.local
# プロファイリングレベルを取得
if db.profiling_level() == OFF:
 print "OFF"
elif db.profiling_level() == SLOW_ONLY:
 print "SLOW_ONLY"
else:
 print "ALL"
 
補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年4月24日日曜日

PyMongoでデータベースを破棄する

PyMongoでデータベースを破棄するには、以下のコードのようにdrop_databaseを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
# データベースを破棄する
conn.drop_database("test")

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年4月16日土曜日

PyMongoでデータベースをコピーする

PyMongoでデータベースをコピーするには、以下のコードのようにcopy_databaseを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
# データベースをコピーする
conn.copy_database("local", "test")

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4

2011年4月8日金曜日

PyMongoでサーバーの情報を取得する

PyMongoでサーバーの情報を取得するには、以下のコードのようにserver_infoを使用します。

# coding=UTF-8
from pymongo import *
conn = Connection("localhost", 27017)
# サーバーの情報を取得する
for key,value in conn.server_info().items():
 print str(key) + "=" + str(value)

補足
ubuntuで以下のコマンドでMongoDBとPyMongoのインストールができます。
sudo apt-get install mongodb
sudo apt-get install python-pymongo

動作環境
Python 2.6.6, PyMongo 1.7, mongodb1.4.4