新增操作
insert函數會添加一個文檔到集合里面。例如我們要登記一個人的信息,首先我們在shell力創建一個局部變量person,其記錄了人的姓名和性別,我們通過db.persons.insert(person)想集合persons中插入一條記錄,通過db.persons.findOne()查詢剛才插入的記錄。
圖 7.新增操作
插入的時候需要注意一下幾點:
1. 由於MongoDB是無模式的,所以不要預先定義和創建一個集合,在第一次插入的時候會自動創建。
2. 文檔中可以存儲任何結構的數據,當然在實際應用中我們存儲的是相同類型的文檔。
3. 每次插入數據的時候,如果沒有”_id”字段,MongoDB會自動為文檔生成此字段和值。
圖 8.一個集合可以承載不同的文檔
查詢操作
mongoDB使用find進行查詢,find的第一個參數決定了查詢要返回那些文檔,其形式也是一個文檔,說明要執行的查詢細節。空的查詢文檔{}會匹配集合的全部內容。find()會返回集合里的所有文檔。如果需要查詢獲取第一條數據可以使用findOne();
圖 9.使用find和findOne查詢集合
使用find()返回一個游標對象,但是shell會自動遍歷游標返回一個初始化的set,並允許我們繼續使用一個迭代輸出。不過我們也可以直接使用游標來輸出。
圖 10.使用it遍歷查詢結果
通過游標和while也可以遍歷查詢結果。
圖 11.使用游標查看查詢結果
有時我們並不需要查詢集合的所有鍵值對,這時我們可以使用findOne或者find的第二個參數指定想要返回的鍵。這樣既可以節省傳輸的流量,又能節省客戶端解碼文檔的時間和內存消耗;
圖 12.查詢結果返回指定字段
查詢條件中的值必須是常量,不能引用文檔中其他鍵的值。
圖 13.查詢條件中不能引用其他字段作為值
mongoDB提供了比較操作符,$lt(<),$lte(<=),$gt(>),$gte(>=),$ne(!=)
圖 14.查詢中的比較操作符
mongoDB中有兩種方式可以進行or查詢,$in可以用來查詢一個鍵等於多個值的記錄,與其對應的是$nin。
圖 15.查詢中的or和in