Heim >Datenbank >MySQL-Tutorial >mongodb update 字符 操作

mongodb update 字符 操作

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 16:37:191130Durchsuche

下面常用的update操作,用mongodb2.6.3版本测试的,官方发布的稳定版本2.4,建议用稳定版。 一,upsert表示如果有数据就不插入,没数据就插入 1,命令行下 db.peoples.update( //查找name等于tank的用户... { name: "tank" },... {... "_id":1,... name: "An

下面常用的update操作,用mongodb2.6.3版本测试的,官方发布的稳定版本2.4,建议用稳定版。

一,upsert表示如果有数据就不插入,没数据就插入

1,命令行下

> db.peoples.update(        //查找name等于tank的用户
... { name: "tank" },
... {
... "_id":1,
... name: "Andy",
... rating: 10,
... score: 10
... },
... { upsert: true }      //如果没有就插入
... );
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "_id" : 1 })
> db.peoples.find();
{ "_id" : 1, "name" : "Andy", "rating" : 10, "score" : 10 }
> db.peoples.update(
... { _id: 1 },
... {
... "_id":1,
... name: "Andy",
... rating: 10,
... score: 10
... },
... { upsert: true }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0 })   //有匹配数据就不做插入操作
> db.peoples.find();
{ "_id" : 1, "name" : "Andy", "rating" : 10, "score" : 10 }

2,php upsert操作

$collection->update(
 array("name" => "zhang"),
 array("_id"=>2,"name"=>"tank","rating"=>10,"score"=>10),
 array("upsert" => true)
);
print_r($collection->findOne());

二,$set 替换值

1,命令行下操作

> db.peoples.find();
{ "_id" : 1, "name" : "Andy", "rating" : 10, "score" : 10 }
> db.peoples.update(
... { _id: 1 },
... {
... $set: { rating: 18 }
... }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0 })
> db.peoples.find();
{ "_id" : 1, "name" : "Andy", "rating" : 18, "score" : 10 }

2,php $set操作

$where = array("_id"=>1);
$param = array('$set'=>array("score"=>"100")); //注意此处的set必须为 单引号
$collection->update($where,$param);
print_r($collection->findOne());

三,$inc如果没有对应对段就直接赋值,如果有在原来的值上加上该值

1,命令行下操作

> db.peoples.find();
{ "_id" : 1, "name" : "Andy", "rating" : 28, "score" : 10 }
> db.peoples.update(
... { _id: 1 },
... {
... $inc: { age: 30 }
... }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0 })
> db.peoples.find();
{ "_id" : 1, "age" : 30, "name" : "Andy", "rating" : 28, "score" : 10 }    //第一次,加了一个字段
> db.peoples.update(
... { _id: 1 },
... {
... $inc: { age: 30 }
... }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0 })
> db.peoples.find();
{ "_id" : 1, "age" : 60, "name" : "Andy", "rating" : 28, "score" : 10 }   //第二次,发现有这个字段就把值加上去了

2,php $inc操作

$where = array("_id"=>1);
$param = array('$inc'=>array("age"=>30));
$collection->update($where,$param);
print_r($collection->findOne());

四,$unset删除字段

1,命令行下操作

> db.peoples.find();
{ "_id" : 1, "age" : 120, "name" : "Andy", "rating" : 28, "score" : 10 }
> db.peoples.update(
... { _id: 1 },
... {
... $unset: { age: ""}    //删除age字段
... }
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0 })
> db.peoples.find();
{ "_id" : 1, "name" : "Andy", "rating" : 28, "score" : 10 }
>

2,php $unset操作

$where = array("_id"=>1);
$param = array('$unset'=>array("score"=>""));
$collection->update($where,$param);
print_r($collection->findOne());

五,$rename修改字段名称

1,命令行下操作

> db.peoples.find();
{ "_id" : 1, "name" : "Andy", "rating" : 28 }
> db.peoples.update(
... { _id: 1 },
... { $rename: { "name": "firstname" } }   //将name改成firstname
... );
WriteResult({ "nMatched" : 1, "nUpserted" : 0 })
> db.peoples.find();
{ "_id" : 1, "firstname" : "Andy", "rating" : 28 }

2,php $rename 操作

$where = array("_id"=>1);
$param = array('$rename'=>array("firstname"=>"name"));   //将firstname改成name
$collection->update($where,$param);
print_r($collection->findOne());

六,multi更新多条数据

1,命令行下操作

> db.peoples.find();
{ "_id" : 1, "name" : "Andy", "rating" : 28 }
{ "_id" : 2, "name" : "zhang", "rating" : 3, "score" : 5 }
{ "_id" : 3, "name" : "hao", "rating" : 30, "score" : 5 }
> db.peoples.update(
... { rating: { $gt: 15 } },
... { $inc: { score: 10 } },
... { multi: true }
... );
WriteResult({ "nMatched" : 2, "nUpserted" : 0 })
> db.peoples.find();
{ "_id" : 1, "name" : "Andy", "rating" : 28, "score" : 10 }      //这条数据更新了
{ "_id" : 2, "name" : "zhang", "rating" : 3, "score" : 5 }
{ "_id" : 3, "name" : "hao", "rating" : 30, "score" : 15 }     //这条数据更新了

2,php multi操作

$where = array("rating"=>array('$gt'=>10));
$param = array('$set'=>array("name"=>"tank1","rating"=>50));
$ismore = array("multiple" => true);
$collection->update($where,$param,$ismore);

版本不一样,功能多少会不一样,例如,我用的版本是2.6.3,$min和$max就用不了,会报"errmsg" : "Invalid modifier specified $min",希望mongodb出一个稳定高版本。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn