<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本篇文章中將講解如何使用MongoDB操作檔案。
檔案的資料結構和JSON基本一致,所有儲存在集合中的資料都是BSON格式。BSON是一種類似json格式的一種二進位制形式的儲存格式,簡稱Binary JSON。
MongoDB使用insert()或save()方法向集合中插入檔案,語法如下:
db.COLLECTION_NAME.insert(document)
例如:以下檔案可以儲存在MongoDB的test資料庫的MongoDBTest集合中:
{"title" : "MongoDB", "description" : "mongoDB是一個NoSql資料庫", "tags" : "NoSql" }
在上面的例子中,MongoDBTest是我們的集合名,如果該集合不在該資料庫中,MongoDB會自動建立該集合並插入檔案。doc是定義的變數,可以以變數的形式插入集合。
檢視已經插入的檔案:
> db.MongoDBTest.insert(doc) WriteResult({ "nInserted" : 1 }) > db.MongoDBTest.find() { "_id" : ObjectId("5a6f13e72d0b37669c5d2a78"), "title" : "MongoDB", "description" : "mongoDB是一個NoSql資料庫", "tags" : "NoSql" } >
插入檔案也可以使用save()方法。如果不知道_id欄位save()方法類似於insert()方法。如果指定_id欄位,則會更新該_id的資料。
下面的例子表示使用save()命令更新資料:
MongoDB查詢檔案使用find()方法。
find()方法以非結構化的方式來顯示所有檔案。
MongoDB查詢資料的語法格式如下:
db.collection.find(query,projection)
引數說明:
如果你需要格式化讀取的資料,可以使用pretty()方法,語法格式如下:
db.collection.find().pretty()
pretty()方法以格式化的方式來顯示所有檔案。
例如:查詢Student集合中的所有檔案。
除了find()方法之外,還有一個findOne()方法,它只返回一個檔案。
MongoDB與RDBMS where語句比較
如果你熟悉常規的SQL資料,通過下表可以更好的理解MongoDB的條件語句查詢:
操作 | 格式 | 範例 | RDBMS中的類似語句 |
等於 | {<key>:<value>} | db.Student.find({"name":"張三"}).pretty() | where name='張三' |
小於 | {<key>:{$lt:<value>}} | db.Student.find({"score":{$lt:"80"}}).pretty() | where score<80 |
小於或等於 | {<key>:{$lte:<value>}} | db.Student.find({"score":{$lte:"80"}}).pretty() | where score<=80 |
大於 | {<key>:{$gt:<value>}} | db.Student.find({"score":{$gt:"80"}}).pretty() | where score>80 |
大於或等於 | {<key>:{$gte:<value>}} | db.Student.find({"score":{$gte:"80"}}).pretty() | where score>=80 |
不等於 | {<key>:{$ne:<value>}} | db.Student.find({"score":{$ne:"80"}}).pretty() | where score!=80 |
(1)查詢name是張三的學生
db.Student.find({"name":"張三"}).pretty()
查詢結果如下圖所示:
(2)查詢成績小於80的學生
db.Student.find({"score":{$lt:"80"}}).pretty()
查詢結果如下圖所示:
(3)查詢成績小於等於80的學生
db.Student.find({"score":{$lte:"80"}}).pretty()
查詢結果如下圖所示:
(4)查詢成績大於80分的學生
db.Student.find({"score":{$gt:"80"}}).pretty()
(5)查詢成績大於等於80分的學生
db.Student.find({"score":{$gte:"80"}}).pretty()
查詢結果如下圖所示:
(6)查詢成績不等於80分的學生
db.Student.find({"score":{$ne:"80"}}).pretty()
查詢結果如下圖所示:
MongoDB的find()方法可以傳入多個鍵(key),每個鍵(key)以逗號分隔開,等價於常規SQL的AND條件。
語法格式如下:
db.collection.find({key1:value1,key2:value2}).pretty()
例如:查詢姓名為張三並且課程是C#程式設計的學生資訊。
db.Student.find({"name":"張三","subject":"C#程式設計"}).pretty()
查詢結果如下圖所示:
以上範例中類似於RDBMS中的where語句:WHERE name='張三' AND subject='C#程式設計'。
MongoDB的OR條件語句使用了關鍵字$or,語法格式如下:
>db.collection.find( { $or:[ {key1:value1},{key2:value2} ] } )
例如:查詢姓名是李四或者成績等於80的學生
db.Student.find({$or:[{"name":"李四"},{"score":"80"}]}).pretty()
查詢結果如下圖所示:
MongoDB使用update()和save()方法來更新集合中的檔案。接下來讓我們詳細來看下兩個方法的應用及其區別。
update()方法用於更新已經存在的檔案。語法格式如下:
db.collection.update( <query>, <update>, { upsert:<boolean>, multi:<boolean>, writeConcern:<document> } )
引數說明:
writeConcern的幾種丟擲異常的級別引數
例如:使用update()方法更新標題(title)
上面的語句只會更新第一條查詢到的檔案,如果你要更新多條相同的檔案,則需要設定multi引數為true。
如果要更新的資料不存在,upsert引數設定為true則會插入資料。
save()方法通過傳入的檔案來替換已有檔案,語法格式如下:
db.collection.save( <document>, { writeConcern:<document> } )
引數說明:
例如:更新_id=5a702a7f2c6ed8f4d3491831的檔案。
MongoDB使用remove()方法來移除集合中的資料。
注意:在執行remove()方法前先執行find()命令來判斷執行的條件是否正確,這是一個比較好的習慣。
remove()方法的基本語法格式如下:
db.collection.remove( <query>, <justOne> )
如果MongoDB是2.6版本以後的,語法格式如下:
db.collection.remove( <query>, { justOne:<boolean>, writeConcern:<document> } )
引數說明:
範例
如果想刪除所有資料,可以使用下面的例子
到此這篇關於使用MongoDB操作檔案的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45