mongodb的寫操作
使用插入數(shù)據(jù)命令:
>insert
需要注意的是,如果插入一文件(現(xiàn)在理解,nosql 類型的db數(shù)據(jù)不能說是記錄了,它是已文件作為單位,而傳統(tǒng)型的關(guān)系型數(shù)據(jù)庫(kù),我們說是插入一條記錄),如果沒有帶人_id,那么會(huì)自動(dòng)生成一個(gè)唯一的id,這個(gè)id好比關(guān)系型數(shù)據(jù)庫(kù)里的主鍵一樣。
如果是自己指定id,那么必須id是唯一的,這點(diǎn)關(guān)系型和nosql型都必須要求的;
數(shù)據(jù)字段的名字不能包含$ 和.
在敲了一陣發(fā)現(xiàn),擦,我要是再shell里面去編寫復(fù)雜的插入語句,就shell的這種一行一句,不搞死我去啊。我想它肯定是支持向bat這種批處理或者其他,看它語法和js一模一樣,于是大膽猜測(cè)它使用的就是javascript,于是我就用notepad++來編輯這些插入命令,試著插入復(fù)雜的對(duì)象;
哦,另外說一句,如果這個(gè)bios數(shù)據(jù)不存在,那么要先使用
>use bios
生成一個(gè)數(shù)據(jù)庫(kù),如果你不往這里插入一筆數(shù)據(jù),mongoDB會(huì)自動(dòng)刪除掉這個(gè)數(shù)據(jù)庫(kù);
所以還要插入一筆讓mongodb維持這數(shù)據(jù)庫(kù)的任意數(shù)據(jù)
>db.bios.insert({a:'a'})
編寫了一個(gè)insert.js腳步,放在安裝目錄的js文件夾下。于是這樣輸入:
>mongolocalhost:27017/bios f:\mongodb\js\insert.js
效果如圖
可以看到,這個(gè)js腳步成功執(zhí)行;
要查詢這個(gè)文檔,輸入命令:
>db.bios.find({ name: { first: 'John', last: 'chen' } } );
有了js寫更多的語句,就方便多了。
Isert語句支持多個(gè)批量插入就像下面這樣:
Insert.js 語句:
db.bios.insert( [ { _id: 3, name: { first: 'Grace', last: 'Hopper' }, title: 'Rear Admiral', birth: new Date('Dec 09, 1906'), death: new Date('Jan 01, 1992'), contribs: [ 'UNIVAC', 'compiler', 'FLOW-MATIC', 'COBOL' ], awards: [ { award: 'Computer Sciences Man of the Year', year: 1969, by: 'Data Processing Management Association' }, { award: 'Distinguished Fellow', year: 1973, by: ' British Computer Society' }, { award: 'W. W. McDowell Award', year: 1976, by: 'IEEE Computer Society' }, { award: 'National Medal of Technology', year: 1991, by: 'United States' } ] }, { _id: 4, name: { first: 'Kristen', last: 'Nygaard' }, birth: new Date('Aug 27, 1926'), death: new Date('Aug 10, 2002'), contribs: [ 'OOP', 'Simula' ], awards: [ { award: 'Rosing Prize', year: 1999, by: 'Norwegian Data Association' }, { award: 'Turing Award', year: 2001, by: 'ACM' }, { award: 'IEEE John von Neumann Medal', year: 2001, by: 'IEEE' } ] }, { _id: 5, name: { first: 'Ole-Johan', last: 'Dahl' }, birth: new Date('Oct 12, 1931'), death: new Date('Jun 29, 2002'), contribs: [ 'OOP', 'Simula' ], awards: [ { award: 'Rosing Prize', year: 1999, by: 'Norwegian Data Association' }, { award: 'Turing Award', year: 2001, by: 'ACM' }, { award: 'IEEE John von Neumann Medal', year: 2001, by: 'IEEE' } ] } ] ); db.bios.insert( { name: { first: 'John', last: 'McCarthy' }, birth: new Date('Sep 04, 1927'), death: new Date('Dec 24, 2011'), contribs: [ 'Lisp', 'Artificial Intelligence', 'ALGOL' ], awards: [ { award: 'Turing Award', year: 1971, by: 'ACM' }, { award: 'Kyoto Prize', year: 1988, by: 'Inamori Foundation' }, { award: 'National Medal of Science', year: 1990, by: 'National Science Foundation' } ] } ) c = db.bios.find( { name: { first: 'John', last: 'McCarthy' } } ); while((c.hasNext())) printjson(c.next())
=================================================
Mongo還有個(gè)save方法,這個(gè)方法同樣也是插入數(shù)據(jù)。咋一樣是一樣的,仔細(xì)想想如果是一樣的,那干嘛不統(tǒng)一,于是想到了ORM模式中,數(shù)據(jù)的save方法中,如果要保存的數(shù)據(jù)已存在,那么它知道是修改這個(gè)數(shù)據(jù),如果不存在則是新增。同樣,這里save也是如此。
如果save方法帶了_id那么,如果數(shù)據(jù)庫(kù)中存在了此_id的文檔,那么,會(huì)修改原有數(shù)據(jù),如果沒有,則新增,所以,不帶_id的save方法和insert是一樣的,但是Insert方法如果插入的是相同的Id,那么是不會(huì)插入的;
更新操作,傳統(tǒng)的數(shù)據(jù)庫(kù)更新操作,必須是更新的數(shù)據(jù)已經(jīng)存在,要不然你想,你數(shù)據(jù)記錄都不在便要更新,這不扯淡嗎,但是,mongodb卻可以這樣,如果要更新的數(shù)據(jù)不存在,那么便插入這文檔數(shù)據(jù);
更新語法:
db.collection.update(<query>,<update>, { upsert: true } )
如果是更新具體某個(gè),那么帶_id的save方法同樣可以完成更新任務(wù);
查詢可發(fā)現(xiàn)改變的數(shù)據(jù):
>c =db.bios.find( { name: { first: 'update', last: 'update' } } ); >while((c.hasNext()))printjson(c.next())
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- Python實(shí)現(xiàn)讀取SQLServer數(shù)據(jù)并插入到MongoDB數(shù)據(jù)庫(kù)的方法示例
- Python實(shí)現(xiàn)批量讀取圖片并存入mongodb數(shù)據(jù)庫(kù)的方法示例
- mongoDB 實(shí)現(xiàn)主從讀寫分離實(shí)現(xiàn)的實(shí)例代碼
- python讀取json文件并將數(shù)據(jù)插入到mongodb的方法
- 了不起的node.js讀書筆記之mongodb數(shù)據(jù)庫(kù)交互
- mongodb與sql關(guān)系型數(shù)據(jù)比較
- mongodb使用c#驅(qū)動(dòng)數(shù)據(jù)插入demo
- c#操作mongodb插入數(shù)據(jù)效率
- mongodb實(shí)現(xiàn)數(shù)組對(duì)象求和方法實(shí)例
- Mongodb讀數(shù)據(jù)操作
相關(guān)文章
MongoDB的主從復(fù)制及副本集的replSet配置教程
MongoDB可以在以一個(gè)主節(jié)點(diǎn)處理客戶端請(qǐng)求的情況下以其他節(jié)點(diǎn)服務(wù)器負(fù)責(zé)映射主節(jié)點(diǎn)上的數(shù)據(jù),即為我們通常所說的主從復(fù)制功能,這里我們就來共同總結(jié)MongoDB的主從復(fù)制及副本集的replSet配置教程:2016-07-07MongoDB中文學(xué)習(xí)入門教程(包括安裝配置和增刪改查)
本文主要介紹了MongoDB的基本知識(shí)和操作,MongoDB是一種面向文檔的無結(jié)構(gòu)化數(shù)據(jù)庫(kù)系統(tǒng),具有靈活性、可擴(kuò)展性和高性能等優(yōu)點(diǎn),安裝和配置MongoDB也非常簡(jiǎn)單,使用MongoDB的API進(jìn)行操作也非常方便,在實(shí)際使用中,MongoDB可以作為常規(guī)數(shù)據(jù)存儲(chǔ)或NoSQL解決方案的替代品2024-01-01MongoDB快速入門筆記(三)之MongoDB插入文檔操作
這篇文章主要介紹了MongoDB快速入門筆記(三)之MongoDB插入文檔操作 的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06mongodb增量/全量備份腳本的實(shí)現(xiàn)詳解
這篇文章主要給大家介紹了關(guān)于mongodb增量/全量備份腳本的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09Mongodb使用索引進(jìn)行查詢優(yōu)化的操作方法
為集合建立合適的索引,能夠有效的減少查詢操作時(shí)掃描數(shù)據(jù)的數(shù)量 ,從而提高查詢效率,簡(jiǎn)化了mongodb內(nèi)部查詢工作,這篇文章主要介紹了Mongodb使用索引進(jìn)行查詢優(yōu)化的操作方法,需要的朋友可以參考下2024-06-06Mongodb使用$pop刪除數(shù)組中元素的操作指南
本文描述怎樣從Mongodb的文檔數(shù)組字段中,使用$pop刪除數(shù)組中的元素,文中通過代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-06-06