[mongo]bigintその2[php]

ここに64bitならmongo.native_longをtrueにすればいい的なことが書かれている・・・
mongo.types

実際にinsertした値をコンソールで確認すると、new MongoInt64でinsertしたときと同じものが入っていた・・・

スポンサーリンク

[メモ]PHPからmongoDBへbigintのinsertの仕方

またしても、私的メモです。

こちらのマニュアル通りこれを使うとbigintが入ります・・・
mongoInt64

■insertの仕方

//接続
$obj_connection = new Mongo();
//db選択
$db = $obj_connection->hoge_db;
//collection選択
$collection = $db->hoge_collection;
$collection->insert(array("id"=>new MongoInt64(220309509225197578)));

・コンソールでinsertされた値をみてみると以下の様に入っていることがわかる。
“id” : NumberLong(“220309509225197578”)

追記:
phpでの取得の仕方

//接続
$obj_connection = new Mongo();
//db選択
$db = $obj_connection->hoge_db;
//collection選択
$collection = $db->hoge_collection;
$collection->find(array("id"=>aray('$gt'=>new MongoInt64(220309509225197578))));

スポンサーリンク

[メモ]PHPでアップロード進捗状況がわかるらしい[未検証]

とりあえず、↓こんなのを見つけたので後で実験してみる。
セッションのアップロード状況

コレができるなら、もう少し面白そうなuploaderが作れるのでは?とか思ったりします。

追記:
php5.4.0以降から使えるのか・・・・
ちょっとめんどうなので、またの機会だな・・orz

スポンサーリンク

[メモ]mongodb:配列内の値での絞り込みの仕方

完全に自分用メモです。

mongoDBで配列内の値をキーにどうやって絞り込むか解らなかったので、調べました。
※実際に値を作ってクエリー投げてみて確認しました。

基本的にはここにすべて書かれています。
高度なクエリー-配列内の値

自分が適当に検証したのは・・

[user@servername ~]$ mongo test_db
> db.test_collection.save({a:1});
> db.test_collection.save({a:2});
> db.test_collection.save({a:3});
> db.test_collection.save({a:4});
> db.test_collection.save({a:5});
> db.test_collection.save({a:6});
> db.test_collection.save({a:7,b:[{b1:"b1_1",b2:"b1_2"},{b1:"b2_1",b2:"b2_2"}]});
> db.test_collection.save({a:8,b:[{b1:"b1_2",b2:"b1_3"},{b1:"b2_2",b2:"b2_3"}]});
> db.test_colection.find({b:{$elemMatch:{b1:"b1_1"}}});
{ "_id" : ObjectId("4febdcb92cd09b7bd6abce80"), "a" : 7, "b" : [ { "b1" : "b1_1", "b2" : "b1_2" }, { "b1" : "b2_1", "b2" : "b2_2" } ] }
>

これで見事に取得できている。。
db.test_colection.find({b:{$elemMatch:{b1:”b1_1″}}});
(結局$elemMatchを使えばよいということらしい。)

これでやっと、一つわからない部分が解決した。。
長かったなぁ・・・

スポンサーリンク