$conn = new Mongo("mongodb://127.0.0.1:27017");
$conn = new MongoClient();
$db = $conn->mydb;
$db = $conn->selectDB(“mydb”);
$collection = $db->test;
$db->selectCollection(‘column’);
$collection = $conn->local->User;
$res = $collection->insert(array("id"=>1,"username"=>"admin","age"=>18,"email"=>"admin@qq.com"));
$res = $collection->update(array("username"=>"admin"),array("$set"=>array("age"=>25)));
$res = $collection->remove(array("username"=>"test"));
$res = $collection->findOne(array("username"=>"admin"));
$res = $collection->find();
$res = $collection->find(array("username"=>new MongoRegex("/admin/i")));
$res = $collection->count();
$res = $collection->count(array("username"=>new MongoRegex("/admin/i"),'age'=>array('$gt'=>21,'$lt'=>80)));
$res = $collection->find(array("username"=>new MongoRegex("/admin/i"),'age'=>array('$gt'=>21,'$lt'=>80)))->count();
$count = $collection->find()->limit(10)->skip(10)->count(true);
$res = $collection->find(array('age' => array('$gt' => 23, '$lt' => 93)))->fields(array("age" => true, "_id" => false))->sort(array('age' => -1));
******************************************mongodb复制远程数据库和表start******************************************************************
$con1 = new Mongo("mongodb://192.168.1.243:7788");
$con2 = new Mongo("mongodb://127.0.0.1:27017");
$db1 = $con1->ak_sys;
$db2 = $con2->ak_sys;
$res1 = $db1->feedback->find();
foreach ($res1 as $k => $v) {
$res2 = $db2->feedback->insert($v);
echo $res2['ok']? 'success' : 'failed';
echo "<br/>";
}
******************************************mongodb复制远程数据库和表end******************************************************************
******************************************where条件可以用js函数方式start******************************************************************
$where['$where'] = "
function(){
var pos_code = this.pos_code;
var count= this.count;
if(pos_code =='d' && count==0){
return true;
}
}";
$res = $db2->feedback->find($where);
*******************************************where条件可以用js函数方式end******************************************************************
日期转换时间戳,再用mongoDate函数:new MongoDate(strtotime(date("Y-m-d H:i:s")));
demo:
$start = new MongoDate(strtotime(date("2011-02-15 00:00:00")));
$end = new MongoDate(strtotime(date("2017-12-15 23:59:59")));
查询分组统计
$where['$match'] = array(
'click_time' => array('$gt' => $start, '$lte' => $end));
$group['$group'] = array(
'_id' => array(
'year' => array('$year' => '$click_time'),
'month' => array('$month' => '$click_time'),
'day' => array('$dayOfMonth' => '$click_time')
),
'total' => array('$sum' => 1)
);
$res = $db2->test->aggregate($where, $group);
echo $db2->test->find(array('click_time'=>array('$gte' => $start, '$lte' => $end)))->count();
$res = $db2->test->find(array('click_time' => array('$gt' => $start, '$lte' => $end)));
where模糊查询分组排序分页
$op = array(
array(
'$match' => array(
'click_time' => array(
'$gte' => $start,
'$lte' => $end
),
'pos_code' => new MongoRegex('/^dd$/'),
'remark' =>'',
'title' => array('$ne'=>null),
)),
array(
'$group' => array(
'_id' => array(
'dev_id' => '$dev_id',
'pos_code' => '$pos_code',
'status' => '$status',
'title'=>'$title',
'year' => array('$year' => '$click_time'),
'month' => array('$month' => '$click_time'),
'day' => array('$dayOfMonth' => '$click_time')
)
)
),
array('$sort' => array('click_time' => -1)),
array('$skip' => 0),
array('$limit' => 100),
);
$res3 = $db2->test->aggregate($op);
echo"<pre>";
print_R($res3);
die;
原生态mongodb操作方法:
MONGODB:数据库(db)->集合(table)->文档(row)
D:\mongodb\bin>mongod.exe --dbpath "d:\set up\mongodb\data"
D:\mongodb\bin>mongo.exe
>use mydb//创建数据库 返回数据库名称
>db mydb//查看数据库信息
>show dbs//查看数据库(创建的数据库mydb 列表中是不存在的。要显示的数据库,需要把它插入至少一个文件。)
db.movie.insert({"name":"tutorials point"})
db.movie.save({"name":"tutorials point"})//保存数据
>use mydb
>db.dropDatabase()//删除数据库
>use test //创建集合{ 当插入一些文件 MongoDB 自动创建的集合。}
>db.createCollection("mycollection")
>show collections//查看创建集合
>db.集合名称.drop()//删除集合
>db.集合名称.find()//查询集合
>db.hello.find().pretty()//格式化返回集合数据
>db.hello.find({key1:value1, key2:value2}).pretty()//根据条件查询 AND
>db.hello.find({$or:[{key1:value1},{key2:value2}]}).pretty()//根据条件查询 OR
>db.hello.find("age": {$gt:10}, $or: [{"name": "li"}, {"title": "book"}] }).pretty()//AND 和 OR
//where age >10 and(name=li or title =book )
//可以使用操作符完成更复杂的操作,常用操作符有:$lt , $lte , $gt , $gte ( < , <= , > , >= ), $ne ( <> ) ,$in , $nin , $or , $not, $mod (取模), $exists, $where
//db.hello.find( {"age" : { “$lt” : 20 } } )
>db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA)//更新文档值(MongoDB默认将只更新单一的文件,来更新多个你需要设置参数置'multi' 为true)
>db.hello.update({'name':'lis'},{$set:{'name':'dragoners.li','age':23}})
>db.hello.remove({'name':'abc'})//删除记录
>db.hello.remove({'name':'abc'},1)//删除一条记录
>db.hello.remove({})//全部删除相当于mysql的truncate
>db.hello.find({},{"name":'abc',_id:0})//_id:0把_id设置为0.返回。类似mysql的视图。
>db.hello.find().limit(3)//类似mysql的limit(0,3)从0开始取3条记录。(参数不写或写0时返回全部)
>db.hello.find().limit(3).skip(2)//类似mysql的limit 限制记录条件,skip忽略前N条记录
//Sort : 排序 -1(降序) 1(升序);
//Count: 记录数
//getIndexes() 获取索引信息
// dropIndexes() : 删除所有索引
//dropIndex( name )删除某个索引