kenji ブログ

おもにphp,javascript について書いていきます。 日が浅いPGなので、参考よりも指摘・議論用のブログになるかと思います。

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'