pymongoで重複など該当する条件があるときにデータを挿入しないようにする

[CentOS7] [Python3] Pymongoの基本的な使い方 にちょっと関連。 [amazonjs asin=”1617291609″ locale=”JP” title=”Mongodb in Action”]   方法 重複など条件が該当する場合に挿入しないようにするには、updateメソッド の upsertオプション を利用する。 利用方法は以下のとおり。 [python] # MongoDBへの接続 mongo_client = MongoClient(‘localhost:27017’) # データベースの選択 db_connect = mongo_client["db_name"] db_connect["collection_name"].update( {判定する条件}, {‘$setOnInsert’: {挿入するデータ}}, upsert=True) [/python]   手順 [CentOS7] [Python3] Pymongoの基本的な使い方でコレクションを作成していた場合は、一度コレクションを削除しておく。 [shell title=”コレクションの削除”] $ mongo > show databases; db_name 0.078GB local 0.078GB > use db_name; switched to db db_name > db["collection_name"].drop() true > exit bye [/shell] pymongoが使える仮想環境に入り、upsert.pyを作成し事前にコレクションとデータを作成しておく。 [shell] $ source ~/mongo_python/bin/activate (mongo_python)$ cd ~/mongo_python/source/ (mongo_python)$ vi upsert.py [/shell] [python title=”upsert.pyの内容”] # -*- coding: utf-8 -*- from pymongo import MongoClient if __name__ == "__main__": mongo_client = MongoClient(‘localhost:27017’) db_connect = mongo_client["db_name"] # データをたくさん挿入する db_connect["collection_name"].insert_many([{‘x’:i} for i in range(0,10)]) # 生成したデータを表示する for x in collection_list:…

[CentOS7][Python3] Pymongoの基本的な使い方

Pymongoの基本的な使い方の紹介。 [amazonjs asin=”1617291609″ locale=”JP” title=”Mongodb in Action”] 前提 以下の手順でMongoDBをインストールし、MongoDBを起動しておく。 [CentOS7] MongoDB3.0をインストール   venvで仮想環境の構築とpymongoのインストール venvで仮想環境を切ってpymongoをインストールする。 [shell] $ pyvenv ~/mongo_python $ source ~/mongo_python/bin/activate (mongo_python)$ pip install –upgrade pymongo (mongo_python)$ pip install pymongo [/shell]   以降のサンプルコードはこちら   データを挿入する ~/mongo_pythonディレクトリ配下にsourceディレクトリを作成し、そこにソースを設置していく。 最初にデータを挿入してみる。insert_oneメソッドを利用するとデータを一つ挿入できる。 データを挿入するデータベース、コレクション(RDBでいうところのテーブル)は、データを挿入すると勝手に作成される。 [shell title=”sourceディレクトリの作成とソースの設置”] $ mkdir ~/mongo_python/source $ cd ~/mongo_python/source $ vi mongo.py [/shell] [python title=”mongo.pyの内容”] # -*- coding: utf-8 -*- from pymongo import MongoClient if __name__ == "__main__": # MongoDBへの接続 mongo_client = MongoClient(‘localhost:27017’) # データベースの選択 db_connect = mongo_client["db_name"] # コレクションを指定し、データを挿入する #db_connect["collection_name"].insert_one({‘x’:1}) [/python]   mongo.pyを実行し、データを挿入する。 データが挿入されたかをMongoDBにアクセスして確認する。 [shell] $ python mongo.py $ mongo > show databases; db_name 0.078GB local 0.078GB > use db_name switched to db db_name > show collections collection_name system.indexes > db["collection_name"].find() {…

[CentOS7] MongoDB3.0をインストール

0.2回分のテーマ。 今度PythonからMongoDBに接続するための前準備。 [amazonjs asin=”1617291609″ locale=”JP” title=”Mongodb in Action”]   MongoDBのリポジトリを追加 MongoDBのリポジトリを追加する。 [shell title=”MongoDBのインストール”] sudo vi /etc/yum.repos.d/mongodb.repo [/shell] [shell title=”mongodb.repoの内容”] [mongodb-org-3.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/ gpgcheck=0 enabled=1 [/shell]   MongoDBをインストール MongoDBをインストール [shell] [centos@ip-10-1-10-168 ~]$ sudo yum install mongodb-org -y 読み込んだプラグイン:fastestmirror mongodb-org-3.0 | 951 B 00:00 Loading mirror speeds from cached hostfile * base: ftp.riken.jp * epel: s3-mirror-ap-northeast-1.fedoraproject.org * extras: ftp.riken.jp * updates: ftp.riken.jp 依存性の解決をしています –> トランザクションの確認を実行しています。 —> パッケージ mongodb-org.x86_64 0:3.0.3-1.el7 を インストール –> 依存性の処理をしています: mongodb-org-server = 3.0.3 のパッケージ: mongodb-org-3.0.3-1.el7.x86_64 –> 依存性の処理をしています: mongodb-org-shell = 3.0.3 のパッケージ: mongodb-org-3.0.3-1.el7.x86_64 –> 依存性の処理をしています: mongodb-org-mongos = 3.0.3 のパッケージ: mongodb-org-3.0.3-1.el7.x86_64 –> 依存性の処理をしています: mongodb-org-tools = 3.0.3 のパッケージ: mongodb-org-3.0.3-1.el7.x86_64 –> トランザクションの確認を実行しています。 —> パッケージ mongodb-org-mongos.x86_64 0:3.0.3-1.el7 を インストール —> パッケージ mongodb-org-server.x86_64 0:3.0.3-1.el7…