MongoDB相關操作

来源:https://www.cnblogs.com/writerW/archive/2018/04/26/8955137.html
-Advertisement-
Play Games

1. 連接MongoDB 註:庫、表無需手動創建,選擇後自動創建 2. CRUD操作 insert(數據) 插入數據(必是一個數組) find(查找條件,查找欄位) 查詢數據 update(查找條件,更新之後的內容=>文檔內容) 更新數據 註: 若不存在hobby欄位,則創建該欄位 預設更新會進行替 ...


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        彈出元素.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言:進程之間交換信息的唯一方法是經由f o r k或e x e c傳送打開文件,或通過文件系統。本章將說明進程之間相互通信的其他技術—I P C(InterProcess Communication)。今天將介紹半雙工的管道。 一、匿名管道 1、匿名管道介紹: 管道有兩種限制; (1) 它們是半雙 ...
  • Linux 安裝JDK 配置完環境變數後無法使用 java -version 無法打開 通過下麵語句 將32位文件與當前系統64位相容 (有待補充32位查法)sudo yum install glibc.i686 JDK的安裝步驟 rpm -qa | grep -i java 查看安裝過的java軟 ...
  • 安裝完成mysql後查看mysql版本時 mysql --help |grep Distrib 原因:這是由於系統預設會查找/usr/bin下的命令,如果這個命令不在這個目錄下,當然會找不到命令,我們需要做的就是映射一個鏈接到/usr/bin目錄下,相當於建立一個鏈接文件。 首先得知道mysql命令 ...
  • 1.在安裝apache的時候已經檢查了本地沒有安裝centos自帶的mysql,有的話一定要卸載掉,否則可能占用埠 2.準備mysql安裝包(註意編譯的時候,mysql5.5版本以上的編譯和5.5一下的編譯是不同的,5.5要用cake編譯,但是cake系統6.5沒有,需自己下載) 3.準備安裝包x ...
  • vim修改redis.conf配置文件(我的已經複製到虛擬機的/usr/local/redis/bin目錄下)為daemonize yes, 以後端模式啟動 ./redis-server redis.confbin目錄下運行 ./redis-cli連接客戶端 輸入ping回應pang成功 Strin ...
  • Centos6.5 64位下安裝apache php mysql(安裝包版本一定要正確,網上很多都不准,不要用32位的安裝包裝再64位上,後期有很多問題,下載安裝後一定要檢出版本,有的網友操蛋,把32的名稱搞成64位的仍給你們,眼睛是看不出來的,最好官網下載) 註意centos6.5系統自帶php ...
  • 老婆公司有個這樣的需求: 查詢出王者榮耀的用戶迴流信息,當用戶連續兩天登陸,則判定為2日迴流,如果間隔一天登陸,則判定為3日迴流,如果間隔5天登陸,則判定為7日迴流。用戶數據間隔時間短為14天(固定)。 準備數據 database語法和mysql一致。 創建表: 插入數據: 最開始我想到的是用 ,s ...
  • MySQL學習 "— Java攻城獅學習路線 —" 入門: "1. 簡介" "2. 安裝" "3. 資料庫連接" "4. 資料庫操作" "5. 註釋" "6. 數據類型" "7. 數據表操作" "8. 數據操作" "9. 常用函數" "10. 導入導出數據" "11. 圖形化工具" "12. SQL ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...