ホームページ  >  記事  >  バックエンド開発  >  php での mongodb select の一般的なオペレーション コードの例、mongodbselect_PHP チュートリアル

php での mongodb select の一般的なオペレーション コードの例、mongodbselect_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:19:28743ブラウズ

PHP での mongodb select の一般的なオペレーション コードの例、mongodbselect

前述したように、mongodb のインストール、構成、クラスタリング、php の挿入と更新などについては、mongodb を参照してください。
mongodb select の一般的な操作について話しましょう

テストデータ:

コードをコピーします コードは次のとおりです:

{ "_id" : 1, "title" : "紅楼夢", "auther" : "曹雪琴", "typeColumn" : "test", "money" : 80, "code" : 10 }
{ "_id" : 2, "title" : "siege", "auther" : "Qian Zhongshu", "typeColumn" : "test", "money" : 56, "code" : 20 }
{ "_id" : 3, "title" : "Chaofa Baidi City", "auther" : "Li Bai", "typeColumn" : "test", "money" : 30, "code" : 30 }
{ "_id" : 4、 "title" : "Nearly Wine"、 "著者" : "李白"、 "お金" : 90、 "コード" : 40 }

1. テーブルエントリの数を取得します

コードをコピーします コードは次のとおりです:

>db.books.count(); 4

> db.books.find().count(); 4

> db.books.count({著者: "李白" }); 2

> db.books.find({money:{$gt:40,$lte:60}}).count(); 1

> db.books.count({お金:{$gt:40,$lte:60}}); 1



phpコードは次のとおりであり、順番に対応しています:

コードをコピーします


コードは次のとおりです:

$collection->count(); //結果: 4 $collection->find()->count() //結果: 4 $collection->count(array("auther"=>"李白")); //結果: 2
$collection->find(array("money"=>array('$gt'=>40,'$lte'=>60)))->count(); //結果: 1
$collection->count(array("money"=>array('$gt'=>40,'$lte'=>60))) //結果: 1



ヒント: $gt はより大きいことを意味します、$gte は以上を意味します、$lt はより小さいことを意味します、$lte は以下を意味します、$ne は等しくないことを意味します、$exists は存在しません、$in は範囲、$nin は特定の範囲内にないことを指定します

2. 単一のデータを取得します

コードをコピーします

コードは次のとおりです:

> db.books.findOne(); { "_id" : 1、 "title" : "紅楼夢",
"著者" : "曹雪琴",
"typeColumn" : "テスト"、
「お金」:80、
「コード」: 10
}

> db.books.findOne({著者: "李白" }); {
"_id" : 3、
"title" : "朝発百度城",
"著者" : "李白",
"typeColumn" : "テスト"、
「お金」:30、
「コード」: 30
}



PHPコードは以下の通り、順番に対応しています



コードをコピーします
コードは次のとおりです:


$collection->findOne(); $collection->findOne(array("著者"=>"李白")); 3. スナップショットカーソルを見つける



コードをコピーします

コードは次のとおりです:

> db.books.find( { $query: {著者: "李白" }, $snapshot: true } ); { "_id" : 3, "title" : "Chaofa Baidi City", "auther" : "Li Bai", "typeColumn" : "test", "money" : 30, "code" : 30 }

{ "_id" : 4、 "title" : "Nearly Wine"、 "著者" : "李白"、 "お金" : 90、 "コード" : 40 }

PHPコードは次のとおりです:

コードをコピーします

コードは次のとおりです:

/**
* 注:
* find() 操作を実行して $result カーソルを取得した後も、カーソルは動的です
。 * つまり、find() の後、カーソル ループが完了するまで、条件を満たすレコードがさらにコレクションに挿入されると、それらのレコードも
によって取得されます。*/
$result = $collection->find(array("auther"=>"李白"))->snapshot(); foreach ($result as $id => $value) {
var_dump($value); }


4. カスタム列表示

コードをコピーします コードは次のとおりです:
> db.books.find({},{"money":0,"auther":0}); //お金と著者は表示されません
{ "_id" : 1, "title" : "紅楼夢", "typeColumn" : "test", "code" : 10 }
{ "_id" : 2, "title" : "siege", "typeColumn" : "test", "code" : 20 }
{ "_id" : 3, "title" : "Chaofa Baidi City", "typeColumn" : "test", "code" : 30 }
{ "_id" : 4, "title" : "ほぼワイン", "code" : 40 }

> db.books.find({},{"title":1}); // タイトル列のみを表示します
{ "_id" : 1, "title" : "紅楼夢" }
{ "_id" : 2, "title" : "包囲" }
{ "_id" : 3, "title" : "朝発百度市" }
{ "_id" : 4, "title" : "ほぼワイン" }

/**
*money は 60 から 100 の間であり、typecolumn とmoney 列が存在する必要があります
*/
> db.books.find({money:{$gt:60,$lte:100}},{"typeColumn":1,"money":1}); { "_id" : 1, "typeColumn" : "test", "money" : 80 }
{ "_id" : 4、"money" : 90 }



phpコードは次のとおりであり、順番に対応しています:

コードをコピーします

コードは次のとおりです: $result = $collection->find()->fields(array("auther"=>false,"money"=>false)); //auther 列とmoney 列を表示しません
$result = $collection->find()->fields(array("title"=>true)) //タイトル列のみを表示します

/**
*money は 60 から 100 の間であり、typecolumn と Money 列が存在する必要があります
​*/
$where=array('typeColumn'=>array('$exists'=>true),'money'=>array('$exists'=>true,'$gte'=>60,' $lte'=>100)); $result = $collection->find($where);



5. ページネーション

コードをコピーします

コードは次のとおりです:

> db.books.find().skip(1).limit(1) //最初の項目をスキップして 1 つ取得します { "_id" : 2, "title" : "siege", "auther" : "Qian Zhongshu", "typeColumn" : "test", "money" : 56, "code" : 20 }

この mysql、limit、offset は少し似ています。php コードは次のとおりです。

コードをコピーします

コードは次のとおりです:

$result = $collection->find()->limit(1)->skip(1);//1 レコードをスキップして 1 レコードを取り出す
6. 並べ替え

コードをコピーします

コードは次のとおりです:

> db.books.find().sort({money:1,code:-1}); //1 は降順を意味します -1 は昇順を意味します、パラメータの順序は並べ替え順序に影響します { "_id" : 3, "title" : "Chaofa Baidi City", "auther" : "Li Bai", "typeColumn" : "test", "money" : 30, "code" : 30 } { "_id" : 2, "title" : "siege", "auther" : "Qian Zhongshu", "typeColumn" : "test", "money" : 56, "code" : 20 } { "_id" : 1, "title" : "紅楼夢", "auther" : "曹雪琴", "typeColumn" : "test", "money" : 80, "code" : 10 }
{ "_id" : 4, "title" : "Nearly Wine", "auther" : "Li Bai", "money" : 90, "code" : 40 }



PHPコードは次のとおりです:


コードをコピーします

コードは次のとおりです:

$result = $collection->find()->sort(array('code'=>1,'money'=>-1));
7. ファジークエリ


コードをコピーします コードは次のとおりです:


> db.books.find({"title":/城/}); // '%str%' のように、コレクション内のデータをクエリします
{ "_id" : 2, "title" : "siege", "auther" : "Qian Zhongshu", "typeColumn" : "test", "money" : 56, "code" : 20 }
{ "_id" : 3, "title" : "Chaofa Baidi City", "auther" : "Li Bai", "typeColumn" : "test", "money" : 30, "code" : 30 }

> db.books.find({"auther":/^李/}); // 'str%' のように、コレクション内のデータをクエリします
{ "_id" : 3, "title" : "Chaofa Baidi City", "auther" : "Li Bai", "typeColumn" : "test", "money" : 30, "code" : 30 }
{ "_id" : 4、 "title" : "Nearly Wine"、 "著者" : "李白"、 "お金" : 90、 "コード" : 40 }

> db.books.find({"auther":/书$/}); // '%str' のように、コレクション内のデータをクエリします
{ "_id" : 2, "title" : "siege", "auther" : "Qian Zhongshu", "typeColumn" : "test", "money" : 56, "code" : 20 }

> db.books.find( { "title": { $regex: 'City', $options: 'i' } } ); // '%str%' のように、コレクション内のデータをクエリします
{ "_id" : 2, "title" : "siege", "auther" : "Qian Zhongshu", "typeColumn" : "test", "money" : 56, "code" : 20 }
{ "_id" : 3, "title" : "Chaofa Baidi City", "auther" : "Li Bai", "typeColumn" : "test", "money" : 30, "code" : 30 }

phpコードは次のとおりであり、順番に対応しています:

コードをコピーします コードは次のとおりです:

$param = array("title" => new MongoRegex('/城/')); $result = $collection->find($param);
$param = array("auther" => new MongoRegex('/^李/')); $result = $collection->find($param);
$param = array("auther" => new MongoRegex('/书$/')); $result = $collection->find($param);



8、$in、$nin

コードをコピーします

コードは次のとおりです:

> db.books.find( { Money: { $in: [ 20,30,90] } } ); // 金額が 20、30、90 に等しいデータを検索します { "_id" : 3, "title" : "Chaofa Baidi City", "auther" : "Li Bai", "typeColumn" : "test", "money" : 30, "code" : 30 } { "_id" : 4、 "title" : "Nearly Wine"、 "著者" : "李白"、 "お金" : 90、 "コード" : 40 }
> db.books.find( { author: { $in: [ /^李/,/^千/ ] } } //李、銭で始まるデータを検索します
{ "_id" : 2, "title" : "siege", "auther" : "Qian Zhongshu", "typeColumn" : "test", "money" : 56, "code" : 20 }
{ "_id" : 3, "title" : "Chaofa Baidi City", "auther" : "Li Bai", "typeColumn" : "test", "money" : 30, "code" : 30 }
{ "_id" : 4, "title" : "Nearly Wine", "auther" : "Li Bai", "money" : 90, "code" : 40 }



phpコードは次のとおりであり、順番に対応しています:


コードをコピーします

コードは次のとおりです:

$param = array("money" => array('$in'=>array(20,30,90))); $result = $collection->find($param); foreach ($result as $id=>$value) { var_dump($value); } $param = array("auther" => array('$in'=>array(new MongoRegex('/^李/'),new MongoRegex('/^钱/'))); $result = $collection->find($param); foreach ($result as $id=>$value) {
var_dump($value); }




9、$or





コードをコピーします

コードは次のとおりです:

> db.books.find( { $or: [ { お金: 20 }, { お金: 80 } ] } ); // お金が 20、80 に等しいデータを検索します { "_id" : 1, "title" : "紅楼夢", "auther" : "曹雪琴", "typeColumn" : "test", "money" : 80, "code" : 10 }

PHPコードは次のとおりです: コードをコピーします
コードは次のとおりです:


$param = array('$or'=>array(array("money"=>20),array("money"=>80))); $result = $collection->find($param); foreach ($result as $id=>$value) {
var_dump($value); }


10、独特

コードをコピーします

コードは次のとおりです:


> db.books.distinct( '著者' ); [ 「曹雪琴」、「銭仲舒」、「李白」 ]
> db.books.distinct( '著者' , { お金: { $gt: 60 } }); [ 「曹雪琴」、「李白」 ]

PHPコードは次のとおりです:

コードをコピーします コードは次のとおりです:

$result = $curDB->command(array("distinct" => "書籍", "key" => "著者")); foreach ($result as $id=>$value) {
var_dump($value); }

$where = array("money" => array('$gte' => 60)); $result = $curDB->command(array("distinct" => "books", "key" => "auther", "query" => $where)); foreach ($result as $id=>$value) {
var_dump($value); }



今回は以上が SELECT の一般的な操作です。次に、もう少し詳しく書きます。

PHPでmongoDBデータベースにクエリを実行するときに、「or」などの複数の条件付きクエリコードを記述するにはどうすればよいですか?

私の知る限り、現時点ではmongoDBには「or」のようなものはありません
ですが、ネットで調べてみたところ
以下の情報を見つけましたので、参考にしてください

mongodbには$or演算子があります。公式サイトに記載 例は以下の通り:

Simple:

db.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } )

別のフィールドを使用

db .foo.find( { name : "bob" , $or : [ { a : 1 } , { b : 2 } ] } )

$or 演算子は、各 or 句の一致を個別に取得し、結果を返すときに重複を削除します。 1.8 では、多数の $or の最適化が計画されています。詳細については、このスレッドを参照してください。
$or はネストできません。




PHP で複数のテーブルの内容を読み取るための select ステートメントを実装する方法

複合クエリ?例えば。詳しい意味は説明する必要はありません
$sql="select * from p_newsbase as a, p_newscontent as b where a.id=b.nid and a.id='$_GET[id]'"



http://www.bkjia.com/PHPjc/875392.html

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/875392.html技術記事 php での mongodb select の一般的なオペレーション コード例、前述の mongodbselect、mongodb のインストール、構成、クラスタリング、php の挿入と更新などは、mongodb を参照してください。 それについて話しましょう...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。