mongoDB學習(二)之常用的修改操作,mongodb學習修改
插入文檔(插入資料庫)
db.person.insert({_id:"0001",name"yuexin"})
清除資料
db.person.drop()
批量插入文檔
shell中不支援批量插入
完成批量插入使用for迴圈
for(var i=0;i<10;i++){
.. db.persons.insert({_id:i,name:"yuexin"+i})
.. }
save操作
save操作與insert操作的區別是當id一樣的時候save會變成更新操作而insert會報錯
刪除列表中所有資料
db.persons.remove()刪除persons中的資料但是不刪除索引(db.system.indexes.find()中有值)
對於
db.person.drop()會刪除索引
刪除帶查詢條件的
db.persons.remove({_id:"3"})
如果想清除一個資料量十分龐大的集合,直接刪除該集合并且重建立立索引的辦法要比直接用remove的效率高很多。
1.強硬的文檔替換式更新操作
update更新
> db.persons.update({age:55},{name:"000"})
2.主鍵衝突時時候會報錯並且停止更新操作
因為是強硬替換的文檔和已有文檔id衝突時時候會報錯
3.insertOrUpdate操作
目的:查詢器查詢出來資料就執行更新操作,查不出來就替換操作
做法:> db.persons.update({name:"0004"},{name:"1114"},true)
4.批次更新
> db.persons.update({name:"yuexin"},{$set:{name:"text"}},false,true)
預設情況當查詢器查出多條資料的時候預設就修改第一條資料。
db.[documentName].update({查詢器},{修改器},false,true)
修改器:
$set 用來指定一個鍵值對,如果存在就進行修改,不存在就進行添加
$inc 只是使用於數字類型,他可以為指定的鍵對應的數字類型的數值做加減操作。
> db.persons.update({age:20},{$inc:{age:-2}})
$unset 刪除指定的鍵
> db.persons.update({age:18},{$unset:{age:1}})
$push
1.如果指定的鍵是數組追加新的數值
> db.persons.insert({_id:0,name:0,book:[]})
> db.persons.find()
{ "_id" : 0, "name" : 0, "book" : [ ] }
> db.persons.update({name:0},{$push:{book:"abc"}})
> db.persons.find()
{ "_id" : 0, "book" : [ "abc" ], "name" : 0 }
> db.persons.update({name:0},{$push:{book:"abcd"}})
> db.persons.update({name:0},{$push:{book:"abcd"}})
> db.persons.find()
{ "_id" : 0, "book" : [ "abc", "abcd", "abcd" ], "name" : 0 }
2.如果指定的鍵不是數組,則中斷當前操作
Cannot apply $push/$pushAll modifier to non-array
3.如果不存在指定的鍵則建立數群組類型的鍵值對
> db.persons.update({name:0},{$push:{things:"abcd"}})
> db.persons.find()
{ "_id" : 0, "book" : [ "abc", "abcd", "abcd" ], "name" : 0, "things" : [ "abcd"
] }
$pushAll 與push相似,是批量加入數組資料
> db.persons.update({name:0},{$pushAll:{things:["abcd","01","02"]}})
> db.persons.find()
{ "_id" : 0, "book" : [ "abc", "abcd", "abcd" ], "name" : 0, "things" : [ "abcd"
, "abcd", "01", "02" ] }
$addToSet 目標數組存在此項則不操作,不存在此項則加進去
> db.persons.insert({_id:0,name:0,book:[]})
> db.persons.update({name:0},{$addToSet:{book:"abcd"}})
> db.persons.find()
{ "_id" : 0, "book" : [ "abcd" ], "name" : 0 }
> db.persons.update({name:0},{$addToSet:{book:"abcd"}})
> db.persons.find()
{ "_id" : 0, "book" : [ "abcd" ], "name" : 0 }
$pop 刪除第一個或者最後一個(-1為第一個,1為最後一個)
> db.persons.update({name:0},{$pop:{book:-1}})
$pull 刪除指定的一個
> db.persons.update({name:0},{$pull:{book:"01"}})
$pull 刪除多個
> db.persons.update({name:0},{$pullAll:{book:["01","02"]}})
$ 數組定位器,如果數組有多個數值我們只想對其中一部分進行操作我們就要用到定位器($)(??)
修改器是放在最外面的,查詢器是放在內層的
$addToSet與$each結合完成批量數組更新
有的話就不添加了
> db.persons.find()
{ "_id" : 0, "book" : [ "js" ], "name" : 0 }
> db.persons.update({_id:0},{$addToSet:{book:{$each:["js","db"]}}})
> db.persons.find()
{ "_id" : 0, "book" : [ "js", "db" ], "name" : 0 }
當document被建立的時候mongoDB為其分配記憶體和預留記憶體,當修改操作不超過預留記憶體的時候速度非常快,反而超過了就要分配新的記憶體則會消耗時間
runCommand可以執行mongoDB中的特殊函數
findAndModify就是特殊函數之一他的用於是返回update或remove後的文檔
> db.persons.find()
{ "_id" : 0, "book" : [ "js", "db" ], "name" : 0 }
> ps = db.runCommand({
... "findAndModify":"persons",
... "query":{name:0},
... "update":{$set:{age:100}},
... new:true})
{
"lastErrorObject" : {
"updatedExisting" : true,
"n" : 1,
"connectionId" : 1,
"err" : null,
"ok" : 1
},
"value" : {
"_id" : 0,
"age" : 100,
"book" : [
"js",
"db"
],
"name" : 0
},
"ok" : 1
}
> ps.value
{ "_id" : 0, "age" : 100, "book" : [ "js", "db" ], "name" : 0 }
mongodb在java中怎做更改操作
java 操作mongodb插入、讀取、修改以及刪除基礎
本文主要講述如何使用Java操作MongoDB以及瞭解MongoDB如何進行日常的資料庫操作。文章內容如下:第一步:安裝MongoDB無需太多的繁雜步驟,你只要在MongoDB官方網站查看安裝說明,根據自己的作業系統進行選擇適應的版本即可。第二步:啟動MongoDB伺服器這一步也很簡單。運行mongod.exe檔案裡的bin檔案夾(我使用的是Windows OS系統),並啟動MongoDB伺服器。在預設的情況下伺服器將啟動連接埠27017,你需要在安裝過程中建立將資料存放區在/data/db目錄裡。第三步:啟動MongoDB shell指令你可以通過運行mongo.exe檔案來啟動MongoBD shell。第四步:利用MongoDB建立資料庫利用MongoDB在MongoDB shell中輸入以下內容建立一個名為“company”的資料庫。use company 記住,除非你在MangoDB裡儲存了一些東西,否則它不會自動為你儲存。使用下面的命令幫你查看可用的資料庫,它會顯示“company”尚未被建立。show dbs; 第五步:在MongoDB中儲存資料使用下面的命令來儲存employee 資料代表一個collection,將其命名為employees。employee = {name : "A", no : 1} db.employees.save(employee) 通過使用下面的命令來查看collection裡的資料。db.users.find(); 如何使用Java操作MongoDB?下面是是一段簡單的Java代碼,你可以在這裡獲得mongo-java驅動。很簡單,只需要使用下面的代碼,重複上面的操作即可。package com.eviac.blog.mongo; import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.Mongo; import com.mongodb.MongoException; public class MongoDBClient { public static void main(String[] args) { try { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("company"); DBCollection collection = db.getCollection("employees"); BasicDBObject employee = new BasicDBObject(); employee.put("name", "Hannah"); employee.put("no", 2); collection.insert(employee); BasicDBObject searchEmployee = new BasicDBObject(); searchEmployee.put("no"......餘下全文>>
誰有學習MongoDB視頻教程
給你推薦一份資料,叫《深入淺出MongoDB應用實戰開發(基礎、開發指南、系統管理、叢集及系統架構)》有22課時,側重於講解MongoDB的常用特性及進階特性,從實際開發的角度出發對MongoDB進行全方位深入剖析。具體內容如下:可以聯絡我 1511065175
MongoDB基礎:
第一講:nosql與MongoDB(nosql興起的背景、各種nosql資料庫介紹,MongoDB的特點)
第二節:MongoDB安裝配置 (MongoDB安裝使用,基本系統管理的技巧,web控制台使用)
第三講:MongoDB shell詳解 (介紹MongoDB shell使用及命令,備份恢複、資料匯入匯出)
第四講:MongoDB文檔、集合、資料庫的概念(介紹文檔、集合、資料庫等基本概念,庫檔案儲存體方式,命令規則)
第五講:Mongodb 資料類型介紹 (詳細介紹MongoDB支援資料類型)
MongoDB開發指南:
第六講:MongoDB增、刪、改文檔(講解MongoDB中增加、刪除、修改文檔的命令,插入原理、批量修改、修改器使用)
第七講:MongoDB查詢文法一 (詳細講解MongoDB強大的查詢功能,$in、$or、$ne、$lt、$gt等操作符組合查詢)
第八講:MongoDB查詢文法二(詳細講解MongoDB強大的查詢功能,Regex查詢、數組查詢、內嵌文檔查詢)
第九講:MongoDB查詢文法三(詳細講解MongoDB where查詢,遊標操作、分頁查詢及程式碼範例、遊標內幕)
第十講:MongoDB索引(詳細講解MongoDB的索引原理、管理、索引查詢分析工具、強制索引使用等)
第十一講:MongoDB彙總統計(講解MongoDB彙總統計功能)
第十二講:MongoDB進階指南-命令工作原理(介紹資料庫命令的工作原理)
第十三講:MongoDB進階指南-固定集合、GridFS(介紹固定集合、GridFS原理及應用)
第十四講:MongoDB進階指南-服務端指令碼(介紹服務端指令碼dbeval、javascript儲存)
MongoDB系統管理:
第十五講:MongoDB系統管理進階技巧1(系統監控)
第十六講:MongoDB系統管理進階技巧2(資料庫安全、備份恢複、資料修複)
MongoDB叢集及系統架構:
第十七講:MongoDB複製功能(詳細講解MongoDB主從複製建立、管理、維護)
第十八講:MongoDB複本集功能(詳細講解MongoDB複本集建立、管理、維護)
第十九講:MongoDB分區功能(詳細講解MongoDB分區建立、管理、維護)
第二十講:MongoDB內幕( 深入剖析MongoDB系統架構、資料檔案結構原理)
MongoDB應用案例:
第二十一講:基於MongoDB通用帳號管理系統開發1
第二十二講:基於MongoDB通用帳號管理系統開發2