<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                啟動方法還是在命令行里輸入命令: `mongod --dbpath=D:\Projects\mongodb\db` ``` D:\Projects\mongodb\bin>mongod --dbpath=D:\Projects\mongodb\db ``` <!--more--> 發現打不開,原因: ``` 2015-06-29T10:13:01.490+0800 W - [initandlisten] Detected unclean shutdown - D:\Projects\mongodb\db\mongod.lock is not empty. ``` 先刪掉`D:\Projects\mongodb\db\mongod.lock`即可。重新輸入命令打開。 發現正常: ``` 2015-06-29T10:13:31.181+0800 I CONTROL [initandlisten] options: { storage: { dbPath: "D:\Projects\mongodb\db" } } 2015-06-29T10:13:31.994+0800 I NETWORK [initandlisten] waiting for connections on port 27017 2015-06-29T10:13:52.033+0800 I NETWORK [initandlisten] connection accepted from 127.0.0.1:52691 #1 (1 connection now open) ``` 再打開一個新的命令行窗口,輸入mongo即可: `D:\Projects\mongodb\bin>mongo` 默認打開`test`數據。 先看看昨天存的數據還在不在,集合名詞是person: ``` > db.person.find() { "_id" : ObjectId("558fd39d02d9b5bcf004aaf5"), "name" : "yjc", "age" : 22 } ``` 數據依然存在。 ## Insert操作 上一篇也說過,文檔是采用“K-V”格式存儲的,如果大家對JSON比較熟悉的話,我相信學mongodb是手到擒來,我們知道JSON里面Value可能是“字符串”,可能是“數組”,又有可能是內嵌的一個JSON對象,相同的方式也適合于BSON。 常見的插入操作也就兩種形式存在:“單條插入”和“批量插入”。 ### 單條插入 先前也說了,mongo命令打開的是一個javascript shell。所以js的語法在這里面都行得通,看起來是不是很牛X。 ``` > var data = {"name":"liyi", "age": 20, "address" : {"province" : "hubei", "city" : "wuhan"}, "favourite" : ["music", "movie"]}; > db.person.insert(data); WriteResult({ "nInserted" : 1 }) ``` 新增成功。使用了js的語法。再來一條: ``` var stu = {}; stu.name = "lier"; stu.age = 10; stu.adress = {"province" : "hubei", "city" : "yichang"}; db.person.insert(stu); ``` 新增成功。 ``` WriteResult({ "nInserted" : 1 }) > db.person.find(); { "_id" : ObjectId("558fd39d02d9b5bcf004aaf5"), "name" : "yjc", "age" : 22 } { "_id" : ObjectId("5590ac85c8e4762462ebbab2"), "name" : "liyi", "age" : 20, "address" : { "province" : "hubei", "city" : "wuhan" }, "favourite" : [ "music", "movie" ] } { "_id" : ObjectId("5590adecc8e4762462ebbab3"), "name" : "lier", "age" : 10, "adress" : { "province" : "hubei", "city" : "yichang" } } ``` ### 批量插入 這玩意跟“單條插入”的差異相信大家應該知道,由于mongodb中沒有提供給shell的“批量插入方法”,沒關系,各個語言的driver都打通了跟mongodb內部的批量插入方法,因為該方法是不可或缺的,如果大家非要模擬下批量插入的話,可以自己寫了for循環,里面就是insert。 ## Find操作 日常開發中,我們玩查詢,玩的最多的也就是二類: ``` 1) >, >=, <, <=, !=, = 2) And,OR,In,NotIn ``` 這些操作在mongodb里面都封裝好了,下面就一一介紹: 1) `"$gt", "$gte", "$lt", "$lte", "$ne", "沒有特殊關鍵字"`,這些跟上面是一一對應的,舉幾個例子。 ``` /*查找大于20歲的*/ > db.person.find({"age": {$gt: 20 }}) { "_id" : ObjectId("558fd39d02d9b5bcf004aaf5"), "name" : "yjc", "age" : 22 } /*查找小于20歲的*/ > db.person.find({"age": {$lt: 20 }}) { "_id" : ObjectId("5590adecc8e4762462ebbab3"), "name" : "lier", "age" : 10, "adress" : { "province" : "hubei", "city" : "yichang" } } /*查找等于20歲的*/ > db.person.find({"age": 20}) { "_id" : ObjectId("5590ac85c8e4762462ebbab2"), "name" : "liyi", "age" : 20, "address" : { "province" : "hubei", "city" : "wuhan" }, "favourite" : [ "music", "movie" ] } ``` 2) `"無關鍵字“, "$or", "$in","$nin"` 同樣我也是舉幾個例子 ``` /*查找age=18 && adress.city="wuhan"*/ > db.person.find({"age": {$gt: 18 },"address.city" : "wuhan"}) "_id" : ObjectId("5590ac85c8e4762462ebbab2"), "name" : "liyi", "age" : 20, "address" : { "province" : "hubei", "city" : "wuhan" }, "favourite" : [ "music", "movie" ] } /*查找age=18 || age=22*/ > db.person.find({"age": {$in: [22 , 10]}}); { "_id" : ObjectId("558fd39d02d9b5bcf004aaf5"), "name" : "yjc", "age" : 22 } { "_id" : ObjectId("5590adecc8e4762462ebbab3"), "name" : "lier", "age" : 10, "adress" : { "province" : "hubei", "city" : "yichang" } } /*查找age=10 || name="yjc"*/ > db.person.find({$or: [{"age": 10}, {"name" : "yjc"}]}); { "_id" : ObjectId("558fd39d02d9b5bcf004aaf5"), "name" : "yjc", "age" : 22 } { "_id" : ObjectId("5590adecc8e4762462ebbab3"), "name" : "lier", "age" : 10, "adress" : { "province" : "hubei", "city" : "yichang" } } ``` 3) 在mongodb中還有一個特殊的匹配,那就是“正則表達式”,這玩意威力很強的。 ``` /*查找name里含有字母c的*/ > db.person.find({"name" : /c+/}); { "_id" : ObjectId("558fd39d02d9b5bcf004aaf5"), "name" : "yjc", "age" : 22 } ``` 4) 有時查詢很復雜,很蛋疼,不過沒關系,mongodb給我們祭出了大招,它就是`$where`,為什么這么說,是因為`$where`中的value就是我們非常熟悉,非常熱愛的js來助我們一馬平川。 ``` > db.person.find({$where : function(){return this.name == "yjc"}}); { "_id" : ObjectId("558fd39d02d9b5bcf004aaf5"), "name" : "yjc", "age" : 22 } ``` ## Update操作 更新操作無非也就兩種,整體更新和局部更新,使用場合相信大家也清楚。記住第一個參數是條件。 ### 整體更新 不知道大家可還記得,我在上一篇使用update的時候,其實那種update是屬于整體更新。 ``` db.person.find({"name" : "yjc"}); var where = {"name" : "yjc"}; var model = db.person.findOne(where); model.age = 25; //重新賦值 model.address = {"city" : "beijing"}; db.person.update(where, model); ``` 看運行結果: ``` > db.person.find({"name" : "yjc"}); { "_id" : ObjectId("558fd39d02d9b5bcf004aaf5"), "name" : "yjc", "age" : 22 } > var where = {"name" : "yjc"}; > var model = db.person.findOne(where); > model.age = 25; 25 > model.address = {"city" : "beijing"}; { "city" : "beijing" } > db.person.update(where, model); WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.person.find({"name" : "yjc"}); { "_id" : ObjectId("558fd39d02d9b5bcf004aaf5"), "name" : "yjc", "age" : 25, "address" : { "city" : "beijing" } } ``` 說明:findOne與find的區別是,如果存在符合條件的記錄,findOne只返回其中的第一條記錄,而不是返回cursor。當不存在符合條件記錄的時候,findOne返回null。是一種對find的補充。 ### 局部更新 有時候我們僅僅需要更新一個字段,而不是整體更新,那么我們該如何做呢?easy的問題,mongodb中已經給我們提供了兩個修改器: `$inc` 和 `$set`。 1) `$inc`修改器 ` $inc`也就是increase的縮寫,學過sql server 的同學應該很熟悉,比如我們做一個在線用戶狀態記錄,每次修改會在原有的基礎上自增$inc指定的值,如果“文檔”中沒有此key,則會創建key,下面的例子一看就懂。 ``` > db.person.update({"name" : "yjc"}, {$inc : {"age" : 5}}); //age 增加5 WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.person.find({"name" : "yjc"}); 5 { "_id" : ObjectId("558fd39d02d9b5bcf004aaf5"), "name" : "yjc", "age" : 30, "address" : { "city" : "beijing" } } ``` 2) `$set`修改器 與$inc用法格式一樣,功能是設置為一個新值。 ``` >db.person.update({"name" : "yjc"}, {$set : {"age" : 5}}); //age 設置為5 WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.person.find({"name" : "yjc"}); 為5 { "_id" : ObjectId("558fd39d02d9b5bcf004aaf5"), "name" : "yjc", "age" : 5, "address" : { "city" : "beijing" } } ``` ### upsert操作 這個可是mongodb創造出來的“詞”,大家還記得update方法的第一次參數是“查詢條件”嗎? 那么這個upsert操作就是說:如果我沒有查到,我就在數據庫里面新增一條,其實這樣也有好處,就是避免了我在數據庫里面判斷是update還是add操作,使用起來很簡單將update的第三個參數設為true即可。 ``` db.person.update({"name" : "yjc2"}, {$set : {"age" : 25}}, true); //如果不存在則新增 ``` ### 批量更新 在mongodb中如果匹配多條,默認的情況下只更新第一條,那么如果我們有需求必須批量更新,那么在mongodb中實現也是很簡單的,在update的第四個參數中設為true即可。例子就不舉了。 ## Remove操作 這個操作在上一篇簡單的說過,這里就不贅述了。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看