当前位置:u赢电竞手机版 > uwin电竞app官网下载 > MongoDB的创建、更新和删除uwin电竞app官网下载

MongoDB的创建、更新和删除uwin电竞app官网下载

文章作者:uwin电竞app官网下载 上传时间:2019-05-14

1.  连接MongoDB

<?php
    //1.连接到MongoDB
    $host = "127.0.0.1";
    $port = 27017;
    $server = "mongodb://$host:$port";
    $mongodb = new MongoClient($server);
    echo "<pre>";
    var_dump($mongodb);
    //2.选择数据库
    $db = $client -> hytc;
    var_dump($db);
    //3.选择数据表
    $collection = $db -> user;
    var_dump($collection);

注:库、表无需手动创建,选择后自动创建

概要

2.  CRUD操作

insert(数据)  插入数据(必是一个数组)

  //插入文档(关联数组)
  $data = ["name"=>"小明","age"=>10,"hobby"=>"swim"];
  $result = $collection -> insert($data);
  echo "<pre>";
  var_dump($result);

 find(查找条件,查找字段)  查询数据

    //查询数据(返回的是cursor游标,资源)
    $condition = ['name'=>'小明'];
    $fields = [
        '_id' => false,     //不查询id
        'name' => true,     //查询name
        'hobby' => true     //查询hobby
    ];
    $result = $collection -> find($condition,$fields);
    foreach($result as $key => $value){
        echo "<pre>";
        var_dump($value);
    }

update(查找条件,更新之后的内容=>文档内容)  更新数据

    //更新数据
    $condition = ['name'=>'小明'];
    $new_doc = [
        '$set' => ["hobby" => "swim"]
    ];
    $result = $collection -> update($condition,$new_doc);
    echo "<pre>";
    var_dump($result);

注:

  • 若不存在hobby字段,则创建该字段
  • 默认更新会进行替换操作,可通过属性修改器进行修改而不是替换
  • 若有多条记录符合更新条件,默认只会更新第一个数据
  • 若需更新符合更新条件的所有记录,则设置该函数的第三个参数:[“multiple”=>true]

    //更新数据
    $condition = ['age'=>'20'];
    $new_doc = [
        '$set' => ["hobby" => "swim"]
    ];
    $result = $collection -> update($condition,$new_doc,['multiple'=>true]);
    echo "<pre>";
    var_dump($result);
    

remove(查找条件)  删除数据

    //删除数据
    $condition = ['name'=>'小明'];
    $result = $collection -> remove($condition);

  下面开始学习MongoDB最重要也是最基础的部分:C(创建)R(查询)U(更新)D(删除);由于R(查询)操作相对来说内容比较多,也比较繁琐,

3. MongoDB 属性修改器

  • 用来对文档的某个属性进行修改

$set  设置

  • 不存在属性则添加, 存在属性则修改

    $data = ["name"=>"小红","age"=>12,"hobby"=>"dance"];
    $collection -> insert($data);
    $result = $collection -> find([],['_id'=>false]);
    foreach($result as $key => $value){
        echo "<pre>";
        var_dump($value);
    }
    
  • 修改某个字段、属性的值

    $new_doc = [
        '$set' => ["hobby" => "swim"]
    ];
    

$unset  删除某个属性

    $condition = ['name'=>'小明'];
    $new_doc = [
        '$unset' => ["hobby" => "swim"]
    ];
    $collection -> update($condition,$new_doc);

$inc  递增某个属性

    $condition = ['name'=>'小明'];
    $new_doc = [
        '$inc' => ['age' => 20]
    ];
    $collection -> update($condition,$new_doc);
    //原先age=10,现为30

$push  压入元素到数组

  • 操作的属性需要是数组

    $data = ['name'=>'小刚','age'=>14,'hobby'=>['read','climb']];
    $collection -> insert($data);
    
  • 向hobby属性(元素),添加元素

    $condition = ['name'=>'小刚'];
    $new_doc = [
        '$push' => ['hobby' => 'sing']
    ];
    $collection -> update($condition,$new_doc);
    

$pushAll    同时压入多个元素到数组

    $condition = ['name'=>'小刚'];
    $new_doc = [
        '$push' => ['hobby' => 'sing','hobby' => 'jump']
    ];
    $collection -> update($condition,$new_doc);

$addToSet      添加到集合, 不能添加重复元素

$pull        删除数组中的某一个元素

$pullAll       删除多个元素

$pop        弹出元素.

  同时使用频率也比较高,所以下一篇会拿出来单独介绍。废话不多说,连上服务器,我们直接进入正题!

一、创建

  按照我们关系型数据库的思想,一个服务器要想存放数据,首先要有数据库,表,字段,约束,当然了也少不了主键,外键,索引,关系等;

  但是在MongoDB的世界里边,我们不用预先的去创建这些信息从而直接来使用各个属性。

  1、数据库(database)

    a)、创建

      use mydb(创建并切换到名称为mydb的数据库实例下。注:如果你对其不进行任何操作,该数据库是没有任何实际意义的)

  2、集合(collection)

    a)、创建

      我们直接指定,不做任何预处理,指定一个名称为users的数据集(相当于表),并向其中插入一条用户数据。

      db.users.insert({ "name" : "wjg" , "age" : 24 })

      返回结果如下,表示你已经成功插入了一条数据:

      WriteResult({ "nInserted" : 1 })

    b)、显式创建

      仅创建一个名称为collectionName的,没有任何大小和数量限制的数据集

      db.createCollection("collectionName")

      如果该数据集有重名,会给出已经存在的提示:

      { "ok" : 0, "errmsg" : "collection already exists", "code" : 48 }

      成功之后会给出ok的提示:

      { "ok" : 1 }

  3、文档(document)

uwin电竞app官网下载,    a)、单一插入

      注:如果没有主键“_id”,插入文档的时候MongoDB会为我们自动保存一个进去。

这里我们指定一个“_id”,当然了,“_id”肯定是不能重复的,否则无法插入成功。

      db.users.insert({"_id":0,"name":"jack","age":20})

      成功插入数据之后:

      WriteResult({ "nInserted" : 1 })

    b)、批量插入

      注:一次性插入多个文档会明显提高插入速度;

插入文档的大小限制为48MB;

如果其中有一个文档插入失败了,这个文档之前的都可以插入成功,但是在它之后都会失败;(不同的驱动可能会有不同的处理方式)

      db.users.insert([{"_id":1,"name":"tom","age":21},{"_id":2,"name":"joe","age":22},{"_id":3,"name":"bob","age":22}])

      批量插入成功之后会返回如下信息:

      BulkWriteResult({

"writeErrors":[],

"writeConcernErrors":[],

"nInserted":3,

"nUpserted":0,

"nMatched":0,

"nModified":0,

"nRemoved":0,

"upserted":[]})

      分别表示的大致意思为:

插入的错误信息,其他的插入错误信息,插入的文档数量,特殊更新的文档数量,匹配到的文档数量,

更新的文档数量,移出的文档数量和特殊文档更新信息

      特殊的文档更新(upsert),其定义如下:

如果没有找到符合更新条件的文档,就会以这个条件和更新文档为基础创建一个新的文档;如果找到了匹配的文档,那么就正常更新

二、更新

  想要更新文档,必须要有两个参数:

    一个是查询条件,用于定位到需要更新的目标文档;另一个是修改器,用于说明要对找到的文档进行哪些修改

  截至此刻为止,我们已经向mydb数据库中名称为users的数据集中添加了如下几个文档:

uwin电竞app官网下载 1

    a)、单一更新

      让我们来为名字为bob的年龄增加一岁,直接将年龄更新为23岁

      db.users.update({"name":"bob"},{$set:{"age":23}}) //使用了$set修改器之后,只会更新age自段的值为23

      或者

      db.users.update({"name":"bob"},{"age":23}) //同样会将age自段的值更新为23,但是会移出除了“_id”和本身之外的所有字段值

本文由u赢电竞手机版发布于uwin电竞app官网下载,转载请注明出处:MongoDB的创建、更新和删除uwin电竞app官网下载

关键词: