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. IOT安全

    相关资源 IOT 漏洞 top 10 https://xz.aliyun.com/t/2278 https://www.owasp.org/images/8/8e/Infographic-v1.jpg ...

  2. 使用Spring操作Redis的key-value数据

    前言 最近工作一直忙的不可开交,小Alan已经很久没有和大家分享知识了,在深圳待了两年多,依然感觉自己还是个小菜鸟,工作中还是会遇到很多自己在短期内无法搞定的事情,每当这个时候总是会感觉到很沮丧,就会 ...

  3. mysql 5.7数据库支持emoji符号但是程序总算报错Incorrect string value: '\xF0\x9F\x98\x84\xF0\x9F...' for column ...

    1.线上碰到个问题,端上切换搜狗输入法后,原来限制的表情符号还能输入.数据库使用的是5.7.22版本的,刚开始以为数据库不支持表情符号导致的,但是看了线上的数据库以及字段,都是支持的. show va ...

  4. Oracle EBS AP 供应商地点失效

    /* 供应商地点失效 creation: created by jenrry 20161108 1.00 */ DECLARE lv_return_status ) := NULL; ln_msg_c ...

  5. spring boot 在jdk 1.7下使用 commandLineRunner

    在spring boot 中有一段代码,使用的是java 1.8的语法: @Bean public CommandLineRunner commandLineRunner(ApplicationCon ...

  6. 使用CADisplayLink写秒表

    使用CADisplayLink写秒表 效果: 源码: StopWatch.h 与 StopWatch.m // // StopWatch.h // ShowTime // // Created by ...

  7. Zepto的SwipeUp 在 android 和微信 的解决方案

    Zepto的SwipeUp 在 android 和微信 的解决方案 时间:2016-04-19 22:20:09 作者:zhongxia 问题解决方案: Q:为什么swipeUp和swipeDown在 ...

  8. python第二十课——math模块中常用的函数

    属性: e:自然数 pi:圆周率 函数: ceil():向上取整 floor():向下取整 sqrt():开平方根 radians():角度转弧度 degrees():弧度转角度 import mat ...

  9. 起床困难综合症 NOI_2014_D1T1

    这道题的正解其实没什么好说的,反而是部分分设计非常巧妙. 之所以要单开一篇是因为当时机房的部分同学刚学位运算,我拿这个题去讲想毒瘤大家一下,于是做了一个挺好看的课件. ppt -> pdf -& ...

  10. 怎样批量提取JPG照片的文件名

    用批处理做吧, @echo off dir /a-d /b >./list.txt 把上面两句代码用记事本保存为“list.bat”(不要引号) 然后把这个文件放到你要提取文件名的文件夹里,就是 ...