MongoDB的一些应用

来源:互联网 发布:男同事对你有好感知乎 编辑:程序博客网 时间:2024/04/30 11:28

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的信息了。