今天我們來看一下MongoDB的基本指令,便於以後可以快速地使用
基本概念
資料庫(database)
集合(collection)
文件(document)
在MongoDB中,資料庫和集合都不需要手動建立,當我們建立文件時,如果文件所在的集合或資料庫不存在會自動建立資料庫和集合
當我們向集合中插入文件時,如果沒有給文件指定_id屬性,則資料庫會自動為文件新增_id,該屬性用來作為文件的唯一標識
- 顯示當前的所有資料庫
show dbs 或 show databases1
- 進入到指定的資料庫中
use 資料庫名1
- 檢視當前所處資料庫
db1
- 顯示資料庫中所有的集合
show collections1
- 向資料庫中插入文件,insert可以插入單個或多個,insertOne只能插入單個,insertMany可以插入多個
db.<collection>.insert(doc) 例子:db.stus.insert({name:"孫悟空",age:18,gender:"男"})db.<collection>.insertOne(doc) 例子:db.stus.insertOne({name:"豬八戒",age:28,gender:"男"});db.<collection>.insertMany([]) 例子:db.stus.insertMany([{name:"沙和尚",age:38,gender:"男"},{name:"白骨精",age:16,gender:"女"},{name:"蜘蛛精",age:14,gender:"女"}]);123
- 檢視當前集合的所有文件
db.<collection>.find() 例子:db.stus.find()1
- 生成一個UUID
ObjectId()1
- 根據條件查詢文件,括號裡面可以寫一個鍵值對物件,代表查詢的條件
db.<collection>.find({})1
- 查詢集合中符合條件的第一個文件
db.<collection>.findOne({})1
- 查詢文件的個數
db.<collection>.find().count()1
- 修改文件,以下update用法會完全替換文件,慎用,如果匹配到多個,預設只會修改第一個,如果想修改多個,則在後面加上配置{multi:true}
db.<collection>.update({查詢條件鍵值對物件},{替換鍵值對物件}) 例子:db.stus.update({name:"沙和尚"},{age:18});1
- 修改文件,指定屬性
db.<collection>.update({查詢條件鍵值對物件},{$set:{指定替換的鍵值對物件}})1
- 修改文件,刪除屬性
db.<collection>.update({查詢條件鍵值對物件},{$unset:{刪除的鍵值對物件}})1
- 只能修改一個文件,如果匹配到多個,預設只會修改第一個
db.<collection>.updateOne({查詢條件鍵值對物件},{$set:{指定替換的鍵值對物件}})1
- 修改多個文件
db.<collection>.updateMany({查詢條件鍵值對物件},{$set:{指定替換的鍵值對物件}})1
- 替換文件,如果匹配到多個,預設只會替換第一個
db.<collection>.replaceOne({查詢條件鍵值對物件},{替換鍵值對物件})1
- 刪除匹配到的文件
db.<collection>.remove({查詢條件鍵值對物件})db.<collection>.delectMany({查詢條件鍵值對物件})12
- 刪除匹配到的第一個文件
db.<collection>.remove({查詢條件鍵值對物件},true)db.<collection>.delectOne({查詢條件鍵值對物件})12
- 清空集合,如果資料庫中沒集合了,那麼資料庫也會消失
db.<collection>.remove({}) 效能較差,一個一個刪除文件 db.<collection>.drop() 直接銷燬集合1
//切換資料庫
use my_test//向users集合中插入一個使用者名稱為孫悟空的文件
db.users.insert({
username:"sunwukong"});//顯示當前資料庫
show dbs//查詢users集合內容
db.users.find();//向users集合插入一個使用者名稱為豬八戒的文件
db.users.insert({
username:"zhubajie"});//查詢users集合中文件的數量
db.users.find().count();//查詢users集合中使用者名稱為孫悟空的文件
db.users.find({username:"sunwukong"});//在users集合使用者名稱為孫悟空的文件中新增地址為花果山
db.users.update({username:"sunwukong"},{$set:{address:"huaguoshan"}});//將users集合使用者名稱為豬八戒的文件的使用者名稱替換為唐僧
db.users.replaceOne({username:"zhubajie"},{username:"tangseng"});//將users集合使用者名稱為孫悟空的文件中的地址移除
db.users.update({username:"sunwukong"},{$unset:{address:1}});//在users集合使用者名稱為孫悟空的文件增加愛好屬性,愛好屬性中又有城市和電影屬性
db.users.update({username:"sunwukong"},{$set:{hobby:{cities:["beijing","shanghai","shenzhen"],movies:["sanguo","hero"]}}});//在users集合使用者名稱為唐僧的文件增加愛好屬性,愛好屬性中又有電影屬性
db.users.update({username:"tangseng"},{$set:{hobby:{movies:["A Chinese Odyssey","King of comedy"]}}});//查詢users集合中屬性hobby中屬性電影值為hero的文件
db.users.find({'hobby.movies':"hero"});//在users集合中使用者名稱為唐僧的文件中的屬性hobby中屬性電影增加Interstellar值,允許值重複
db.users.update({username:"tangseng"},{$push:{"hobby.movies":"Interstellar"}});//在users集合中使用者名稱為唐僧的文件中的屬性hobby中屬性電影增加Interstellar值,不允許值重複
db.users.update({username:"tangseng"},{$addToSet:{"hobby.movies":"Interstellar"}});//在users集合中刪除屬性hobby中屬性城市為北京的文件
db.users.remove({"hobby.cities":"beijing"});//刪除users集合
db.users.remove({});db.users.drop();//向numbers中插入2000條資料//效率慢for(var i=1; i<=2000; i++){
db.numbers.insert({num:i});}db.numbers.find();use my_test
db.numbers.remove({});//效率快var arr = [];for(var i=1; i<2000; i++){
arr.push({num:i});}db.numbers.insert(arr);//查詢numbers中num為500的文件
db.numbers.find({num:500});//查詢numbers中num大於500的文件
db.numbers.find({num:{$gt:500}});db.numbers.find({num:{$eq:500}});//查詢numbers中num小於30的文件
db.numbers.find({num:{$lt:30}});//查詢numbers中num大於40小於50的文件
db.numbers.find({num:{$gt:40,$lt:50}});//查詢numbers中num大於1995的文件
db.numbers.find({num:{$gt:1995}});//檢視numbers集合中前10條資料
db.numbers.find({num:{$lte:10}});//limit()設定顯示資料的上限
db.numbers.find().limit(10);//跳過10條取10條skip((頁碼-1)*每頁顯示的條數).limit(每頁顯示的條數)db.numbers.find().skip(10).limit(10);//跳過20條取10條
db.numbers.find().skip(20).limit(10);//查詢工資小於2000的員工
db.emp.find({sal:{$lt:2000}});//查詢工資在1000-2000之間的員工
db.emp.find({sal:{$lt:2000,$gt:1000}});//查詢工資小於1000或大於2500的員工
db.emp.find({$or:[{sal:{$lt:1000}},{sal:{$gt:2500}}]});//查詢財務部的所有員工var depno = db.dept.findOne({dname:"財務部"}).deptno;db.emp.find({deptno:depno});//為所有薪資低於1000的員工增加工資400元
db.emp.updateMany({sal:{$lte:1000}},{$inc:{sal:400}});//查詢文件時,預設情況是按照_id的值進行排序(升序)//sort()可以用來指定文件的排序的規則,sort()需要傳遞一個物件來指定排序規則,1表示升序 -1表示降序,按順序排序,相同則依次按之後的欄位進行排序
db.emp.find({}).sort({sal:1,empno:-1});//在查詢時,可以在第二個引數的位置來設定查詢結果的投影,1顯示0隱藏
db.emp.find({},{ename:1,_id:0,sal:1});
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69993640/viewspace-2759292/,如需轉載,請註明出處,否則將追究法律責任。