Mongodb基本語法

Mongo 使用數據庫

Mongod 開機

Mongoimport 導入數據

Nosql:非關係型數據庫,mongodb是其中一個php

一、經過Mongo鏈接,默認鏈接的是test數據庫(這個數據庫不可刪,是mongodb安裝的時候自帶的)
二、mongodb與其餘數據庫相比,關係型數據庫必須建立表和字段,不然沒法使用。可是mongodb屬於「無狀態模式」,結構不須要設計,直接使用便可,存什麼東西取決於咱們本身向他傳入什麼!(當不存在則建立)
因爲市場普標稱之爲表,因此mongodb作了兼容語法處理
顯示全部數據庫:show dbs / show databases(都是同樣的)
顯示全部集合/表:show collections / show tables(都是同樣的)
顯示當前使用數據庫:db / db.getName();

數據庫狀態:db.stats()

資料:docs.mongodb.com/manual/refe…
"db" : "dnedu",:表示當前是針對「數據庫」的描述
    "collections" : 3,:表示當前數據庫有多少個collections,固然也能夠經過show collections
    "objects" : 14,:表示當前數據庫全部collection總共有多少行數據,可是隻是一個估計值,並非很是的精準
    "avgObjSize" : 60.142857142857146,:每行數據的大小,也是估計值
    "dataSize" : 842, :當前數據庫全部數據的總大小
    "storageSize" : 90112,表示當前數據庫佔有磁盤大小,單位bytes
    "numExtents" : 0,:包含全部集合中數據庫中擴展數量的計數
    "indexes" : 3,
    "indexSize" : 90112,
"ok" : 1
複製代碼

控制檯運算

寫入數據:

一:普通數據添加方式:

插入數據是我們熟悉的「json」格式,而在mongodb實際上使用的語法稱之爲」bson」 BSON()是一種類json的一種二進制形式的存儲格式,簡稱Binary JSON,它和JSON同樣,支持內嵌的文檔對象和數組對象,可是BSON有JSON沒有的一些數據類型,如Date和BinData類型。算法

db.product.insert({name:"xiaomi6",price:1999,weight:140,number:40,area:{province:"beijing",city:"beijing"}})
db.product.insert({name:"huawei01",price:2999,weight:120,number:20,area:{province:"shenzhen"}})
複製代碼

當集合(product)不存在則建立一個新的集合,插入的數據格式基本和json同樣sql

二:多維數組對象添加:

db.product.insert({name:"xiaomi6",price:1999,weight:140,number:40,area:{province:"beijing",city:"beijing"}})
複製代碼

三:數組信息的添加

db.product.insert({name:"xiaomi6",price:1999,weight:140,number:40,color:[‘red’,’black’,’yellow’]})
複製代碼

咱們不可能一條一條的數據去插入,因此能夠直接導入json文件批量插入文檔 mongoimport --db dnedu --collection product --drop --file dr.json 注意--drop是先刪除後導入,也能夠不用--drop不刪除直接導入mongodb

數據查詢:

籠統查詢:

查詢全部數據:db.product.find()數據庫

查詢第一條數據:db.product.findOne();json

條件限制查詢: db.product.find({name:"huawei01"})。相似於Mysql命令:select * from 表名 where name = 「huawei01」

ID:id的字段內容值是mongodb自己算法得到的,該_id對應的值信息在「全球惟一」,至關於Mysql當中的主鍵id,是惟一的,該id能夠自行設置,可是不推薦

範圍查詢
關鍵字:$gt   $lt   $gte   $lte
複製代碼
Mongodb裏面的字段單引號和雙引號均可以,隨意,只是在PHP因爲會把$解釋運行,因此php不行
查詢price大於2500的數據 db.product.find({price:{'$gt':2500}})
複製代碼

查詢price小於2500的數據 db.product.find({price:{'$lt':2500}})
複製代碼

設置多個查詢條件:
查詢price大於2500,weight小於100的數據
db.product.find({price:{'$gt':2500},weight:{'$lt':100}})
複製代碼

查詢price大於2500,weight等於20的數據
db.product.find({price:{'$gt':2500},weight:20})
複製代碼

多維字段查詢:
查詢area裏面的province等於changsha
db.product.find({'area.province':"changsha"})
複製代碼

數組條件查詢:
查詢color帶有red的數據(包含一個)
db.product.find({color:’red’});
複製代碼

查詢color帶有red和black的數據(必須包含兩個)
db.product.find({color:{‘$all’:[‘red’,’black’]}})
複製代碼

$or,多個條件,知足其一便可
price等於3000或number小於100
db.product.find({'$or':[{price:3000},{number:{'$lt':100}}]})
複製代碼

限制查詢字段:
查詢數據price等於3000,數據只顯示name
db.product.find({price:3000},{name:1}),這條語句有id
db.product.find({price:3000},{name:1,_id:0}):這條語句真的就只有name字段了
複製代碼

1.表示查詢顯示此字段 0.表示排除不顯示此字段數組

若是你須要,好比name爲1,price爲0,那麼會報錯,由於mongodb的規則(能夠都爲1,頁能夠都爲0)就是要輸出就所有輸出,要麼不輸出就所有不輸出,_id除外,能夠隨意設置0,1,bash

db.product.find({price:3000},{name:1,price:0,_id:0})
複製代碼

修改數據:
關鍵字:$set
修改name等於huawei06的字段,但只修改了一條
db.product.update({name:"huawei06"},{'$set':{name:"update before name"}});
複製代碼

若是修改語句中,沒有$set,會致使刪除其餘除id外的全部字段,而後保留咱們本身設置的字段,會有下面這張黑圖的字段變爲下面的圖片所剩的字段ui

若是修改的字段沒有則建立,若是執行如下命令
db.product.update({name:"huawei07"},{history:"i don't know"})
複製代碼

上面這條語句會刪除其餘除id之外的全部字段,而後建立hisotry字段

刪除數據:刪除全部name等於huawei03的數據

db.product.remove({name:"huawei03"})spa

刪除字段:db.product.update({name:"huawei04"},{'$unset':{name:1}});,只會刪除一條

模糊匹配:

若是隻須要一條數據,能夠有兩種方式:
Limit:獲取多少條數據db.teacher.find({name:/哈/}).limit(1)
FindOne:只獲取一條:db.teacher.findOne({name:/哈/})
複製代碼
相關文章
相關標籤/搜索