MongoDB应用记录
MongoDB应用记录
1、这里简单记录下模糊查询的操作方式:
命令行下:
db.letv_logs.find({"ctime":/uname?/i});
php操作
$query = array("name"=>new MongoRegex("/.*" . $var . ".*/i"));
$db->find($query);
2、Mongodb在PHP中的应用:
Insert:不需要添加数据之前先创建表,Mongodb会在Insert的时候自动创建。
例如我们需要创建一张用户(users)表,包含username, password, phone, age, address.
在执行Insert操作时,Mongogdb会自动生成一个“_id”,并将其保存到Mongo里。_id具有唯一性。
五个字段:username, password, phone, age, address
$params['username'] = 'Mongo';
$params['password'] = 'Mongo';
$params['phone'] = '15210394832';
$params['age'] = 10;
$params['address'] = '北京市';
$db = new Mongo();
$db->users->insert($params);
Update:修改数据
例如我们想要改变_id为51c410c53d289d607100010a的Username为MongoliaDb这里我们需要用到$set修改器
如果直接使用update($params),那么需要原来的所有数据必须存在数据,否则会直接改变原来的数据结果,但如果只想改变Mongo中的某一个值,那需要用到更新修改器,以$set为例
$params['username'] = 'MongoliaDb';
$db->users->update(array('_id'=>new MongoId('51c410c53d289d607100010a')), array('$set'=> $params));
remove:删除
Delete可以利用remove(condition) $db->users->delete(array('_id'=>new MongoId('51c410c53d289d607100010a'));
find()与findOne()查询符合扔条件的全部数据,和单独的一条
3、Mongodb应用之upsert:
在项目过程中,很多时候我们会遇到一种情况:当某条数据已经存在的话,我们就update,但是数据不存在的话,我们就会insert。所以每次遇到这种情况时我们都要反复的去Check一个,然后才能去update或insert。而Mongo在这里为我们提供了一种“upsert”处理方式,它会在更新的时候去检验是update还是insert,从而为我们节省了Check的时间。例如:
我们现在有一篇最新文章需要录入,但是不知道是否已经存在,如果存在就update,不存在就insert。这时我们就会用到了upsert。以PHP操作为实例:
$db->article->update(array('title'=>'xxx'), array('title'=>'xxx', 'content'=>'xxxx',...), true);其中参数true表示是使用upsert模式。如果没有true的参数的话,就会默认更新数据。
4、Mongodb应用之$in
$in 可以查询一个键的多个值。我们经过看到根据某个字段多个值去取数据,比如说,取某字段值为1,22,40的信息。如果是Mysql的话,我们都知道会用in关键字,
select * from table where id in (1,22,40);但是在Mongo里面呢,同样,也提供了$in的用法,与mysql中in的用法大同小异(以PHP语言为准)。
$db->article->find(array('id'=>array('$in'=>array(1,22,40))));这样就会取出id为1,22,40的信息了。