【チップ-1】MongoDBとPHP--高度なクエリー

2880 ワード

/*

*$gt---より大きい
*$lt---より小さい
*$gte---以上
*$lte---以下
*
*$ne---等しくない
*$in---ここで
*$nin---その中にはありません
*
*$mod---型取り
*$all---すべての値が存在します
*$size---一致する要素の数
*$exists---要素が存在するかどうかを判断
*$type---エレメントタイプの一致
*$not---取逆
*
*$slice---配列のサブセットを返します
*$where---クエリーの一部としてJavaScriptを実行できます
*
*$set---モディファイヤ
*$unset---削除キー
*$inc---自己増加または自己減少(数値のみ)
*$upsert---データがクエリーされていない場合は、クエリー条件とデータに基づいてレコードが新規作成されます.
*
*配列モディファイヤ
*$push---配列の末尾に要素を挿入
*$addToSet---要素を挿入し、重複を回避
* $each ---
*$pop---配列の任意の端から要素を削除
*$pull---特定の条件に従って要素を削除
*/
//接続の作成
$conn=newMongo();
//データベースの選択
$coll=$conn-> ceshi -> user;
///No.01:大($gt)、小($lt)、大または等しい($gte)、小または等しい($lte)
//eg:「age」が2以上10以下のドキュメント
$coll-> find(array('age'=>array('$gt'=> 2,'$lte'=> 10)));
///No.02:等しくない($ne)、ここで($in)、ここでない($nin)
//eg:「age」が5に等しくない
$coll-> find(array('age'=>array('$ne'=> 5)));
//eg:「age」は5または6の記録
$coll-> find(array('age'=>array('$in'=>array(5, 6))));
///No.03:型取り($mod)
//eg: "age"% 10 == 1
$coll-> find(array('age'=>array('$mod'=>array(10, 1))));
///No.04:すべての値が存在します($all)
//eg:ユーザーID「groupid」は5と6に同時に属する
$coll-> find(array('groupid'=>array('$all'=>array(5, 6))));
//*配列が大きい多くの場合、各要素はキー全体の値であることが理解できます.
///No.05:一致する要素の数($size)
//eg:ユーザーには2つのアイデンティティがあります
$coll-> find(array('groupid'=>array('$size'=> 2)));
//*公式サイトでは、範囲内の要素を一致させることはできません.$size<5などを探したい場合は、要素の数を保存するためのフィールドを作成することをお勧めします.
//No.06:要素が存在するかどうかを判断します($exists)
//eg:「age」が存在するユーザー
$coll-> find(array('age'=>array('$exists'=> true)));
///No.07:一致要素タイプ($type)
//eg:「age」はintタイプ
$coll-> find(array('age'=>array('$type'=> 16)));
//* Int(16),String(2)
///No.08:取反($not)
//eg:「age」が5でないデータを取得
$coll-> find(array('age'=>array('$not':5)));
///No.09:正規表現
//eg:カラム「user」の「a」で始まるデータを取得する
$coll-> find(array('user'=>'/^a/'));
///No.10:埋め込みデータ内の値を問い合わせる
$coll-> find(array('user.first'=>'lai'));
//No.11: $elemMatch
//埋め込み文書を照会する際、限定条件をグループ化
$coll->find({'user':{'$elemMatch':{'first':'lai','last':'qian'}}});
///No.12:Whereクエリー--通常のクエリーよりもかなり遅いので、必要でない場合は使用しないでください.
$coll->find({'$where':'function(){ return this.x + this.y == 10;}'});
$coll->find({'$where':'this.x+this.y==10'});
//どうしても使うときは、まず通常のクエリーでデータをフィルタし、whereはデータのチューニングにのみ使用します