For Want Of A Better Word

MongoDBとPHP_リンクと個人的ポイントまとめ

      2015/04/18

===============================

リンク集

===============================

MongoDBの概要・操作

これを読んどけば、入門はOKってぐらいのもん

developerリファレンス日本語訳。有難い。

PHPから操作

MongoDB を PHP から操作する
Mongoクラスリファレンス

一応。

フレームワークと使いたいな

Cakeを使ってみようかな

その他

SQL から Mongo への対応表

こいつは便利だぜ

SQL脳に優しいMongoDBクエリー入門

こいつも便利だぜ

===============================

ポイント 注意事項

===============================

PHPで操作する場合は、MongoDBコンソールのオブジェクトは連想配列に置き換えて考えるんだ!

MongoDBのUpdateにだまされるな! SQLのupdateとは動きが違うぞ!
詳細は薄い本の第2章を参照のこと。

updateで複数レコードを更新する。

SQLなら条件に該当したレコードが更新されるけど、MongoDBの場合はデフォルトで最初の1件だけ。 オプションで「{ multi: true }」とする必要がある。

#mongoshell
db.news.update({“no”:”1″},{{“name”:”fz6″}}, { multi: true });

upsertを使う場合はオプションに「{ upsert: true }」だ

アップデート対象のキーが無い場合は、insertしてくれるUpsert。
対応しているが、上記のオプションが必要。

PHPでの$setを使ったupdateがうまくない….

コレクションの一部をかきかえるための$setを下記のように使っても、うまく更新されなかった。

point項目が100になるとイメージしてたけど。だめ。

しようがないので、丸々書き換えて対応

ふー。

コンソールでfindした場合は全件一気に表示されない。itとか入れろって、面倒くせえ。

全件出す場合はこれだ。

db.collection.find().forEach(printjson)

【参考】http://codenote.net/mongodb/1713.html

(追加)検索結果の操作(ソートとか、件数指定とか)

http://d.hatena.ne.jp/sasaplus1/20120624/1340525126

// scoreの降順でソート
db.users.find().sort({score: -1});

// 2番目のドキュメントから3件だけ表示
db.users.find().skip(2).limit(3);

findの結果からidを取得するのがちょっと特殊。

IDでfindする。new MongoIdとかしないといけなひ。。

作る時は配列に配列を追加する方法で可能。マージでは無い。

条件増えてくと、階層増えるからもっとうまいやり方を考えときたい。

日付の扱い

MongoDBで、日付の期間を指定して検索する方法 – DQNEO起業日記
How to return ISO date format in PHP for MongoDB? – Stack Overflow

・Momngo日付オブジェクト-みたいな奴が居て、日付で絞り込みとかするにはその形式にして保存しないとアカン。
で、文字列⇔Mongo日付についてメモ

MongoShellでのやり方

PHPでのやり方。

PHPで全件取得して表示

sortを使うと結構メモリ容量オーバーする。

1データのサイズが大きいのもあるけど、件数多い場合はsort使うなってことかな。。。。
一応インデックスは張ったんだけどなぁ。

 - mongodb, php

  関連記事

自然順と辞書順のソートの違い

  本ページの内容は下記リンクに集約しました。 http://www. …

辞書順比較・数値順比較・自然順の違い

Contents1 辞書順と数値順2 (補足)辞書順で、「文字と数字」 「大文字 …

アンケートOSS lime surveyを軽く使ってみてのメモ

varsion 1.92 良い所 作成できるアンケートは多岐にわたり、細かい設定 …

CakePHPでjoinしようとしたときのエラー 【Notice (8): Undefined offset: 0 [CORE/Cake/Model/Datasource/DboSource.php, line 1714]】

Cakeでfind()からjoinしようとしたときに下記Noticeが出て、検索 …

【PHP】【Slim】インストールー手動ダウンロード と Composer

ずーっと思ってた、CakeとかCodeIgnaitorとか、俺には多機能すぎる! …