参考地址:
http://www.runoob.com/mongodb/mongodb-atomic-operations.html
mongodb不支持事务,所以,在你的项目中应用时,要注意这点。无论什么设计,都不要要求mongodb保证数据的完整性。
但是mongodb提供了许多原子操作,比如文档的保存,修改,删除等,都是原子操作。
所谓原子操作就是要么这个文档保存到Mongodb,要么没有保存到Mongodb,不会出现查询到的文档没有保存完整的情况。
原子操作:
$inc
$inc可以对文档的某个值为数字型(只能为满足要求的数字)的键进行增减的操作。
php方法,会自动生成一张集合
function autoId($name, $db){
$update = array('$inc'=>array("id"=>1));
$query = array('name'=>$name);
$command = array(
'findandmodify'=>'autoIds', 'update'=>$update,
'query'=>$query, 'new'=>true, 'upsert'=>true
);
$id = $db->command($command);
return $id['value']['id'];
}
demo:
// 连接到mongodb
$m = new MongoClient();
$db = $m->myblog;
$collection = $db->createCollection("blog");
$collection = $db->blog;
//自动ID
$id = autoId('blog', $db);
$document = array(
"id" => $id,
"title" => "MongoDB",
"description" => "database",
"likes" => 100,
"url" => "http://www.w3cschool.cc/mongodb/",
"by", "w3cschool.cc"
);
$collection->insert($document);