Last active
October 23, 2015 03:52
-
-
Save toya33/90dd821ad54339a3f5c1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
#概要: | |
# ローカルのmongodbサーバに対してfindコマンドを実行する | |
# 対象のコレクション名は第一引数、検索条件は第二引数で指定する | |
# 第二引数がない場合は検索条件なしで第一引数のコレクションに対し | |
# findコマンドを実行する | |
# | |
#引数: | |
# 第一引数-コレクション名 | |
# 第二引数-検索条件 | |
# | |
#戻り値 | |
# 1行目-ドキュメントの数 | |
# 2行目-検索結果のドキュメント | |
function findByConditions() | |
{ | |
if [ ! $# -ge 2 ]; then | |
echo "error : mongodfbAccesser.sh findByConditions() argument number is invalid." | |
exit 1 | |
fi | |
COLLECTION_NAME=$1 | |
SEARCH_CONDITIONS=${@:2} | |
SEARCH_RESUTL_NUMBER=0 | |
#mongodbにアクセスし、その結果を保存する | |
TMP=`mongo --eval "printjson(db.${COLLECTION_NAME}.find($SEARCH_CONDITIONS).toArray())"` | |
SEARCH_RESULT=`echo "$TMP" | sed -e '1,2d'` | |
#todo:検索結果の数を算出する処理 | |
#shellScriptからmongodbのfindコマンドを実行した場合 | |
#ドキュメントがヒットすると結果はJSON形式かつ複数行で表示される(2015/10/23) | |
if [ `echo "$SEARCH_RESULT" | wc -l` -ne 1 ]; then | |
#JSON形式では要素の区切りを「},」にしているため | |
#その数に1を加算することでヒットしたドキュメント | |
#の数を算出することができる(2015/10/23) | |
SEARCH_RESUTL_NUMBER=`echo "$SEARCH_RESULT" | grep -c "},"` | |
SEARCH_RESUTL_NUMBER=`expr $SEARCH_RESUTL_NUMBER + 1` | |
fi | |
echo $SEARCH_RESUTL_NUMBER | |
echo "$SEARCH_RESULT" | |
return 0 | |
} | |
#検索条件を設定する | |
condition="{\"registDate\": {\"\$gte\": ISODate(\"2015-10-20T13:00:00\")}}" | |
COMMAND_RESULT=`findByConditions datemgt $condition` | |
#コマンドの実行結果の一行目(ドキュメントの数)だけ取り出す | |
COUNT_DOC=`echo "$COMMAND_RESULT" | head -n 1` | |
#コマンドの実行結果の二行目以降(ドキュメントのの内容)を取り出す | |
DOC=`echo "$COMMAND_RESULT" | tail -n +2` | |
echo "count document : $COUNT_DOC" | |
if [ $COUNT_DOC -eq 0 ] | |
then | |
echo "content document: nothing" | |
else | |
echo "content document: " | |
echo "$DOC" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment