Common operation code examples of mongodb select in php, mongodbselect
As mentioned earlier, mongodb installation, configuration, clustering, and php insertion and update, etc., please refer to: mongodb.
Let’s talk about the common operations of mongodb select
Test data:
Copy code The code is as follows:
{ "_id" : 1, "title" : "A Dream of Red Mansions", "auther" : "Cao Xueqin", "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", "auther" : "Li Bai", "money" : 90, "code" : 40 }
1. Get the number of table entries
Copy code The code is as follows:
> db.books.count();
4
> db.books.find().count();
4
> db.books.count({auther: "Li Bai" });
2
> db.books.find({money:{$gt:40,$lte:60}}).count();
1
> db.books.count({money:{$gt:40,$lte:60}});
1
The php code is as follows, corresponding in order:
Copy code The code is as follows:
$collection->count(); //Result: 4
$collection->find()->count(); //Result: 4
$collection->count(array("auther"=>"Li Bai")); //Result: 2
$collection->find(array("money"=>array('$gt'=>40,'$lte'=>60)))->count(); //Result: 1
$collection->count(array("money"=>array('$gt'=>40,'$lte'=>60))); //Result: 1
Tips: $gt means greater than, $gte means greater than or equal to, $lt means less than, $lte means less than or equal to, $ne means not equal to, $exists does not exist, $in specifies the range, $nin specifies not to be in a certain range
2. Get a single piece of data
Copy code The code is as follows:
> db.books.findOne();
{
"_id" : 1,
"title" : "A Dream of Red Mansions",
"auther" : "Cao Xueqin",
"typeColumn" : "test",
"money" : 80,
"code" : 10
}
> db.books.findOne({auther: "Li Bai" });
{
"_id" : 3,
"title" : "Chaofa Baidi City",
"auther" : "李白",
"typeColumn" : "test",
"money" : 30,
"code" : 30
}
The php code is as follows, corresponding in order
Copy code The code is as follows:
$collection->findOne();
$collection->findOne(array("auther"=>"Li Bai"));
3. find snapshot cursor
Copy code The code is as follows:
> db.books.find( { $query: {auther: "Li Bai" }, $snapshot: true } );
{ "_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 }
The php code is as follows:
Copy code The code is as follows:
/**
* Note:
* After we perform the find() operation and obtain the $result cursor, this cursor is still dynamic.
* In other words, after I find(), until my cursor loop completes, if any more records that meet the conditions are inserted into the collection, then these records will also be obtained by $result.
*/
$result = $collection->find(array("auther"=>"Li Bai"))->snapshot();
foreach ($result as $id => $value) {
var_dump($value);
}
4. Custom column display
Copy code The code is as follows:
> db.books.find({},{"money":0,"auther":0}); //money and auther are not displayed
{ "_id" : 1, "title" : "A Dream of Red Mansions", "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" : "Nearly Wine", "code" : 40 }
> db.books.find({},{"title":1}); //Only display the title column
{ "_id" : 1, "title" : "A Dream of Red Mansions" }
{ "_id" : 2, "title" : "siege" }
{ "_id" : 3, "title" : "Chaofa Baidi City" }
{ "_id" : 4, "title" : "Nearly wine" }
/**
*money is between 60 and 100, the typecolumn and money columns must exist
*/
> db.books.find({money:{$gt:60,$lte:100}},{"typeColumn":1,"money":1});
{ "_id" : 1, "typeColumn" : "test", "money" : 80 }
{ "_id" : 4, "money" : 90 }
The php code is as follows, corresponding in order:
Copy code The code is as follows:
$result = $collection->find()->fields(array("auther"=>false,"money"=>false)); //Do not display the auther and money columns
$result = $collection->find()->fields(array("title"=>true)); //Only display the title column
/**
*money is between 60 and 100, the typecolumn and money columns must exist
*/
$where=array('typeColumn'=>array('$exists'=>true),'money'=>array('$exists'=>true,'$gte'=>60,' $lte'=>100));
$result = $collection->find($where);
5. Pagination
Copy code The code is as follows:
> db.books.find().skip(1).limit(1); //Skip the first item and take one
{ "_id" : 2, "title" : "siege", "auther" : "Qian Zhongshu", "typeColumn" : "test", "money" : 56, "code" : 20 }
This mysql, limit, offset is somewhat similar, the php code is as follows:
Copy code The code is as follows:
$result = $collection->find()->limit(1)->skip(1);//Skip 1 record and take out 1
6. Sorting
Copy code The code is as follows:
> db.books.find().sort({money:1,code:-1}); //1 means descending order -1 means ascending order, the order of parameters affects the sorting order
{ "_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" : "A Dream of Red Mansions", "auther" : "Cao Xueqin", "typeColumn" : "test", "money" : 80, "code" : 10 }
{ "_id" : 4, "title" : "Nearly Wine", "auther" : "Li Bai", "money" : 90, "code" : 40 }
The php code is as follows:
Copy code The code is as follows:
$result = $collection->find()->sort(array('code'=>1,'money'=>-1));
7. Fuzzy query
Copy code The code is as follows:
> db.books.find({"title":/城/}); //like '%str%' to query the data in the collection
{ "_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":/^李/}); //like 'str%' to query the data in the collection
{ "_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 }
> db.books.find({"auther":/书$/}); //like '%str' to query the data in the collection
{ "_id" : 2, "title" : "siege", "auther" : "Qian Zhongshu", "typeColumn" : "test", "money" : 56, "code" : 20 }
> db.books.find( { "title": { $regex: 'city', $options: 'i' } } ); //like '%str%' to query the data in the collection
{ "_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 }
The php code is as follows, corresponding in order:
Copy code The code is as follows:
$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 and $nin
Copy code The code is as follows:
> db.books.find( { money: { $in: [ 20,30,90] } } ); //Find data where money is equal to 20, 30, 90
{ "_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 }
> db.books.find( { auther: { $in: [ /^李/,/^千/ ] } } ); //Find data starting with Li, Qian
{ "_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 }
The php code is as follows, corresponding in order:
Copy code The code is as follows:
$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
Copy code The code is as follows:
> db.books.find( { $or: [ { money: 20 }, { money: 80 } ] } ); //Find data where money is equal to 20, 80
{ "_id" : 1, "title" : "A Dream of Red Mansions", "auther" : "Cao Xueqin", "typeColumn" : "test", "money" : 80, "code" : 10 }
The php code is as follows:
Copy code The code is as follows:
$param = array('$or'=>array(array("money"=>20),array("money"=>80)));
$result = $collection->find($param);
foreach ($result as $id=>$value) {
var_dump($value);
}
10. distinct
Copy code The code is as follows:
> db.books.distinct( 'auther' );
[ "Cao Xueqin", "Qian Zhongshu", "Li Bai" ]
> db.books.distinct( 'auther' , { money: { $gt: 60 } });
[ "Cao Xueqin", "Li Bai" ]
The php code is as follows:
Copy code The code is as follows:
$result = $curDB->command(array("distinct" => "books", "key" => "auther"));
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);
}
I’ll write it here first. The above are just some common operations of SELECT. Next, I will write a little more.
As far as I know, currently there is no such thing as "or" in mongoDB
But I just checked online
and found the following information, please refer to it
There is $or operator in mongodb. The example given on the official website is as follows:
Simple:
db.foo.find( { $or : [ { a : 1 } , { b : 2 } ] } )
With another field
db.foo.find( { name : "bob" , $or : [ { a : 1 } , { b : 2 } ] } )
The $or operator retrieves matches for each or clause individually and eliminates duplicates when returning results. A number of $or optimizations are planned for 1.8. See this thread for details.
$or cannot be nested.
Compound query? For example. I don’t need to explain the detailed meaning
$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.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/875392.htmlTechArticleCommon operation code examples of mongodb select in php, mongodbselect mentioned earlier mongodb installation, configuration, cluster, and php For inserts and updates, please refer to: mongodb. Let’s talk about it...