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);

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. MongoDB学习笔记(五) MongoDB文件存取操作

    由于MongoDB的文档结构为BJSON格式(BJSON全称:Binary JSON),而BJSON格式本身就支持保存二进制格式的数据,因此可以把文件的二进制格式的数据直接保存到MongoDB的文档结 ...

  2. Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作

    2 Mongodb CRUD 操作 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mong ...

  3. mongodb高级操作及在Java企业级开发中的应用

    Java连接mongoDB Java连接MongoDB需要驱动包,个人所用包为mongo-2.10.0.jar.可以在网上下载最新版本. package org.dennisit.mongodb.st ...

  4. Mongodb相关 (Shell命令 / mongoose)

    Mongodb相关 1.创建一个文件夹作为数据库存放的目录 2.打开cmd cd到Mongodb/bin目录去 3.执行mongod --dbpath "第一项创建的文件夹(数据库数据存放目 ...

  5. 第12章—使用NoSQL数据库—使用MongoDB+Jpa操作数据库

    使用MongoDB+Jpa操作数据库 SpringData还提供了对多种NoSQL数据库的支持,包括MongoDB;neo4j和redis.他不仅支持自动化的repository,还支持基于模板的数据 ...

  6. MongoDB常用操作整理

    Mongodb:是一种NoSQL数据库,NoSQL:Not Only SQLSQL: 数据表->JDBC读取->POJO(VO.PO)->控制层转化为JSON数据->客户端 这 ...

  7. 从零自学Hadoop(20):HBase数据模型相关操作上

    阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  8. 从零自学Hadoop(21):HBase数据模型相关操作下

    阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...

  9. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

随机推荐

  1. Android实战——GreenDao3.2的使用,爱不释手

    1前言 GreenDao是一款操作数据库的神器,经过了2.0版本的升级后,已经被广泛的开发者使用.确实是很好用,入门简单,可以剩去了数据库的建表操作和数据库SQL的编写,博主用了一次之后爱不释手,和以 ...

  2. 润乾V4报表批量打印

     背景说明 在应用中,经常遇到,批量打印的需求,批量打印,顾名思义,就是点击一次打印按钮,能打印多张报表. 下面,我们来介绍一下怎么样实现批量打印的 应用举例: Jsp代码 <% //rep ...

  3. CentOS随笔 - 5.CentOS7安装Sql Server 2017

    前言 转帖请注明出处: http://www.cnblogs.com/Troy-Lv5/ 开发环境嘛, 作为.Net系Sql Server那是必备的. 听过Sql server可以安装在Linux上了 ...

  4. Linux 新建用户和组命令

    用户的角色是通过UID和GID识别的. UID用户ID:相当于各为的身份证,在系统中是唯一的 GID组ID:相当于各为的家庭或者你们的学校. 1.新建用户及设置密码命令如下: useradd [参数] ...

  5. 第2次作业——APP的案例分析

    APP的案例分析 网易有道词典APP,使用这个软件有三年之久.唯独最爱的一点就是我每天都能听到不一样的英文歌看到创作歌手的来历,当然偶尔也会有其他国家的歌.起初使用这个软件的目的是用来查单词,每天积累 ...

  6. 4-5 R语言函数 split

    #split根据因子或因子列表将 向量或其他对象分组 #通常与lapply一起使用 #split(参数):split(向量/列表/数据框,因子/因子列表) > x <- c(rnorm(5 ...

  7. 第二章 Google guava cache源码解析1--构建缓存器

    1.guava cache 当下最常用最简单的本地缓存 线程安全的本地缓存 类似于ConcurrentHashMap(或者说成就是一个ConcurrentHashMap,只是在其上多添加了一些功能) ...

  8. 3192: [JLOI2013]删除物品

    3192: [JLOI2013]删除物品 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1366 Solved: 794 [Submit][Statu ...

  9. Hive学习之路 (十四)Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK

    概述 本文中介绍前几个序列函数,NTILE,ROW_NUMBER,RANK,DENSE_RANK,下面会一一解释各自的用途. 注意: 序列函数不支持WINDOW子句.(ROWS BETWEEN) 数据 ...

  10. Hadoop学习之路(十七)MapReduce框架Partitoner分区

    Partitioner分区类的作用是什么? 在进行MapReduce计算时,有时候需要把最终的输出数据分到不同的文件中,比如按照省份划分的话,需要把同一省份的数据放到一个文件中:按照性别划分的话,需要 ...