以下是原文翻译成繁體中文的版本,使用了markdown格式:
# MongoDB - 查詢文件
你好啊,未來的數據庫大師!今天,我們將深入MongoDB的精彩世界,學習如何查詢文件。作為你們親切友善的鄰居計算機老師,我將指導你們一步步走過這段旅程。所以,戴上你們的虛擬安全帽,讓我們開始探索吧!
## find() 方法
`find()` 方法就像是MongoDB中的一場寶藏尋找。它幫助我們在集合中搜索文件。想像一下,在你的學校數據庫中有一個名為 "students" 的集合。讓我們看看如何使用 `find()` 來獲取信息。
```javascript
db.students.find()
這行簡單的代碼將返回 "students" 集合中的所有文件。這就像是在問:"給我看所有的學生!"
但如果我们想更具體一點呢?比如我們想找到所有名叫 "John" 的學生:
db.students.find({name: "John"})
這個查詢將返回所有名為 "John" 的字段。這就像是在問:"你能給我看班上所有的John嗎?"
pretty() 方法
現在,讓我們使用 pretty()
方法讓我們的結果看起來整潔有序。這就像給我們的數據來一次時尚變身!
db.students.find().pretty()
這樣會以格式化的方式顯示結果,讓我們更容易閱讀。這就像整理你的亂糟糟的房間——突然之間一切看起來都好多了!
findOne() 方法
有時候,我們只想找到一個文件。這時 findOne()
方法就派上用場了。這就像從樹上摘下第一個蘋果。
db.students.findOne({name: "Sarah"})
這將返回它找到的第一個名為 "Sarah" 的文件。如果有多個Sarah,它只會顯示遇到的第一个。
MongoDB中的RDBMS WHERE子句等效
現在,讓我們將MongoDB的查詢與SQL的WHERE子句進行比較。這就像在兩種語言之間進行翻譯!
SQL WHERE子句 | MongoDB等效 |
---|---|
WHERE name = "John" | {name: "John"} |
WHERE age > 25 | {age: { $gt: 25 }} |
WHERE age >= 25 | {age: { $gte: 25 }} |
WHERE age < 25 | {age: { $lt: 25 }} |
WHERE age <= 25 | {age: { $lte: 25 }} |
WHERE age != 25 | {age: { $ne: 25 }} |
MongoDB中的AND
在MongoDB中,我們可以使用AND邏輯來組合條件。這就像在說:"我想要這個和那個。"
db.students.find({name: "John", age: 20})
這個查詢將找到所有名為 "John" 且年齡為20歲的文件。
MongoDB中的OR
有時候,我們想要找到符合一個條件或另一個條件的文件。MongoDB為我們提供了支持!
db.students.find({$or: [{name: "John"}, {age: 20}]})
這個查詢將找到所有名為 "John" 或年齡為20歲的文件。
同時使用AND和OR
我們甚至可以將AND和OR條件結合起來使用。這就像創造一張複雜的藏寶地圖!
db.students.find({
grade: "A",
$or: [{name: "John"}, {age: 20}]
})
這個查詢將找到所有年級為 "A" 且(名為 "John" 或年齡為20歲)的文件。
MongoDB中的NOR
NOR就像在說"不是這個也不是那個"。它是OR的反義詞。
db.students.find({
$nor: [{name: "John"}, {age: 20}]
})
這個查詢將找到所有名不是 "John" 且年齡不是20歲的文件。
MongoDB中的NOT
最後,我們有NOT運算符,就像在說"除了這個以外的任何東西"。
db.students.find({
name: { $not: { $eq: "John" } }
})
這個查詢將找到所有名不是 "John" 的文件。
至此,親愛的學生們!我們已經穿越了MongoDB查詢的土地,從簡單的查找到了複雜的邏輯操作。記住,熟練使人嫻熟,所以不要害怕嘗試這些查詢。誰知道呢?你可能會在數據中發現一些隱藏的寶藏!
在我們結束之前,來個快速的測試。你能寫一個查詢來找到所有18歲的學生或名為 "Emma" 且年級為 "B" 的學生嗎?試試看,並記得使用 pretty()
方法來讓你的結果看起來更加精美!
祝你好運,未來的數據庫大師!
Credits: Image by storyset