mongodb よく使うシェルコマンド集
- データ検索
→ db.collection.find({ field:value }) - nestデータの検索
→ db.collection.find({ "field1.field2":value }) - 範囲検索
→ db.collection.find({ field: { $gt:value1, $lt:value2 }}) - 不等号検索
→ db.collection.find({ field: { $ne:value }}) - or検索 ※1 → db.collection.find({ $or: [{ field1:value1 }, {field2:value2}]})
- データ削除
→ db.collection.remove({ field:value })
*新規collection 作成
→ db.createCollection( collection, { capped:true, size:10000000 }) - データupdate
→ db.collection.update({ field1:value }, { $set:{ field2:value }}, true)
第一引数: 検索クエリ, 第二引数: insertしたいデータ, 第三引数: upsertフラグ ※2 ※3
備考
※1 条件オペレータを使用する際のfield指定は、ネストを扱うことができない 高度なクエリーhttp://www.mongodb.org/pages/viewpage.action?pageId=6029357#%E9%AB%98%E5%BA%A6%E3%81%AA%E3%82%AF%E3%82%A8%E3%83%AA%E3%83%BC-%24or $or
※2 capped されているcollction には変更を加えることができない
Capped Collections
http://www.mongodb.org/display/DOCS/Capped+Collections
通常のコレクションでも前もってスペースを確保
※3 $set以外の modifier オペレーションは下記
http://www.mongodb.org/pages/viewpage.action?pageId=7209549#%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88-%24set
modifier オペレーション
指定したportを使用しているprocessを割り出す
サーバーを立ち上げるとき、port が塞がっていて
立ち上がらないことがよくあるので、メモ。
lsof -i:port番号 で PID の下に表示される番号がプロセスidなので、
kill -9 プロセスid で使用中のプロセスを落とす。
使用中のプロセス一覧を表示するコマンドはよくあるが、
他の不要な情報が入りすぎていたり port 番号まで表示されていなかったりするので、
使いたいport の状態をピンポイントで調べたい場合にはオススメです。
Mac OS X のローカルで sed が実行されないケース
ssh 接続して一括置換で使っていたコマンドが
ローカル環境で使えなかったのでメモ。
サーバー上で一括置換を行う際は
find directory -name "*.filetype" | xargs grep -l serchword | xargs sed -i 's/serchword/replaceword/g'
で行っていました。
ですが、ローカルのファイルに対して上記を使っても
sed: 1: "検索でヒットしたファイル": invalid command code .
といったエラーが出てきて実行されない...
調べたら、下記に答えが載っていました。
「Sed: ‘sed: 1: invalid command code R’ on Mac OS X」
http://www.markhneedham.com/blog/2011/01/14/sed-sed-1-invalid-command-code-r-on-mac-os-x/
オプションコマンド「 -i 」の後ろに「""」を置いたら実行できました!
find . -name "*.php" | xargs grep -l kkaneko | xargs sed -i "" 's/kkaneko/green/g'