> show tables address users > > show collections address users >
方式一: insert: _id 會自動建立惟一索引,當id重複的時候會報錯 db.集合名字.insert({}) // 插入一條,返回值中不包含insertedIds db.集合名字.insert([{}, {}]) // 批量插入,返回值中不包含insertedIds db.集合名字.insertOne(Bson) // 插入一條,返回值返回插入的insertedId db.集合名字.insertMany(Bson) // 批量插入,返回值中包含insertedIds db.集合名字.findAndModify({查詢條件}, "update": {須要添加或更新的字段}, "upsert": true }); 寫入安全: 應答模式:插入時會返回成功或者失敗 非應答模式:插入時沒有反饋,即插入有沒有成功不知道 > var user = {"name": "mengdee", "age": 20, "address": "上海市浦東新區張江鎮", "create_time": new Da te()} > db.users.insert(user) WriteResult({ "nInserted" : 1 }) > db.users.find() { "_id" : ObjectId("5976ad21670af2aa52ea90df"), "username" : "mengdee", "age" : 26 } { "_id" : ObjectId("5976b395670af2aa52ea90e0"), "name" : "mengdee", "age" : 20, "address" : "上海市 浦東新區張江鎮", "create_time" : ISODate("2017-07-25T02:57:04.545Z") } > var userDoc = db.users.findOne() > var insertDate = userDoc["_id"] > insertDate.getTimestamp() ISODate("2017-07-25T02:29:53Z") > insertDate.str 5976ad21670af2aa52ea90df > db.users.insertOne({"username": "mengday3"}) { "acknowledged" : true, "insertedId" : ObjectId("5976b632670af2aa52ea90e1") } > db.users.insertMany([{"username": "mengday4"}, {"username": "mengday5"}]) { "acknowledged" : true, "insertedIds" : [ ObjectId("5976b666670af2aa52ea90e2"), ObjectId("5976b666670af2aa52ea90e3") ] } > db.users.insert([{"username": "mengday6"}, {"username": "mengday7"}]) BulkWriteResult({ "writeErrors" : [ ], "writeConcernErrors" : [ ], "nInserted" : 2, "nUpserted" : 0, "nMatched" : 0, "nModified" : 0, "nRemoved" : 0, "upserted" : [ ] }) // 使用insertOne插入重複的_id 會報錯 > db.users.insertOne({"_id": 1, "username": "mengday8"}) { "acknowledged" : true, "insertedId" : 1 } > db.users.insertOne({"_id": 1, "username": "mengday8"}) 2017-07-25T11:15:47.822+0800 E QUERY [thread1] WriteError: E11000 duplicate key error collection: test.users index: _id_ dup key: { : 1.0 } : WriteError({ "index" : 0, "code" : 11000, "errmsg" : "E11000 duplicate key error collection: test.users index: _id_ dup key: { : 1.0 } ", "op" : { "_id" : 1, "username" : "mengday8" } }) // findAndModify 也能夠用於插入文檔,可是前提是必定不存在,若是存在了就變成更新了,單純的插入仍是不要用種方式了,findAndModify通常用於更新或刪除操做 > db.users.findAndModify({ "query": {"username": "mengday11"}, "update": {"username": "mengday11", "age": 26}, "upsert": true }) null > db.users.find() { "_id" : ObjectId("597c584448c373e228a9259e"), "username" : "xxx", "age" : 26 }
// 刪除bson變量中的某個字段 > var user = {"username": "mengday", "age": 26} > delete user.age > user { "username" : "mengday" }
> db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456", "age" : 38 } // 使用$set修改器修改指定字段, 當字段不存在時會建立並賦值 > db.users.update({"username": "mengday5"}, {$set: {"age": 18}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456", "age" : 18 } // $unset 用於刪除字段 > db.users.update({"username": "mengday5"}, {"$unset": {"age": 1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456" } > db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456" } // $push: 向數組的尾部添加一個元素,若是字段不存在則建立 > db.users.update({"username": "mengday5"}, {"$push": {"hobby": "mm"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "mm" ] } > db.users.update({"username": "mengday5"}, {"$push": {"hobby": "money"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "mm", "money" ] } > // $push + $each : 批量push > db.users.update({"username": "mengday5"}, {"$push": {"hobby": {"$each": ["play", "eat"]}}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "mm", "money", "play", "eat" ] } > // $pushAll = $push + $each 批量push > db.users.update({"username": "mengday5"}, {"$pushAll": {"hobby": ["drink", "happy"]}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "mm", "money", "play", "eat", "drink", "happy" ] } > db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456" } // $addToSet:不重複的set集合 > db.users.update({}, {"$addToSet": {"hobby": "eat"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "eat" ] } > > db.users.update({}, {"$addToSet": {"hobby": {"$each": ["eat", "drink"]}}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "eat", "drink" ] } > // $pop: 彈出數組的頭部元素或尾部元素: -1:頭部,1:尾部 > db.users.update({}, {"$pop": {"hobby": 1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "username" : "mengday5", "password" : "123456", "hobby" : [ "eat" ] } // $pull: 刪除數組中的值 > db.lists.insert({"no": [1, 1, 1, 3]}) WriteResult({ "nInserted" : 1 }) > db.lists.update({}, {"$pull": {"no": 1}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.lists.find() { "_id" : ObjectId("597c0a3087d089dfa7ce1be2"), "no" : [ 3 ] } > // 使用小標或者定位操做符$來操做數組 > db.users.find() { "_id" : ObjectId("597c3c1587d089dfa7ce1be3"), "username" : "mengday", "addresses" : [ { "city" : "shanghai", "area" : "zhangjiang" }, { "city" : "be ijing", "area" : "chaoyang" } ] } > // 修改內嵌文檔數組中第二個元素的值 > db.users.update({"username": "mengday"}, {"$set": {"addresses.1.area": "chaoyangqu"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.findOne() { "_id" : ObjectId("597c3c1587d089dfa7ce1be3"), "username" : "mengday", "addresses" : [ { "city" : "shanghai", "area" : "zhangjiang" }, { "city" : "beijing", "area" : "chaoyangqu" } ] } // 定位操做符$: 查詢條件通常是以數組中的元素爲條件,使用$符號做爲知足查詢條件的第一條文檔對應的下標值 > db.users.update({"addresses.city": "beijing"}, {"$set": {"addresses.$.area": "CHAOYANG"}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.findOne() { "_id" : ObjectId("597c3c1587d089dfa7ce1be3"), "username" : "mengday", "addresses" : [ { "city" : "shanghai", "area" : "zhangjiang" }, { "city" : "beijing", "area" : "CHAOYANG" } ] } // 文檔總體替換 > db.users.update({"username": "mengday5"}, {"age": 17}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "age" : 17 } // 第三個參數: 插入或者更新,當_id不存在的時候插入,當_id值存在的時候更新 > db.users.update({"_id": 2}, {"username": "mengday", "age": 16}, true) WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : 2 }) > db.users.find() { "_id" : 1, "age" : 17 } { "_id" : 2, "username" : "mengday", "age" : 16 } // 更新 > db.users.update({"_id": 2}, {"username": "mengday2", "birthday": new Date()}, true) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "age" : 17 } { "_id" : 2, "username" : "mengday2", "birthday" : ISODate("2017-07-25T06:33:10.579Z") } > db.users.find() { "_id" : 1, "username" : "mengday", "age" : 16 } { "_id" : 2, "username" : "mengday2", "age" : 16 } // 更新知足條件的第一條文檔 > db.users.update({"age": 16}, {$set: {"age": 18}}) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.users.find() { "_id" : 1, "username" : "mengday", "age" : 18 } { "_id" : 2, "username" : "mengday2", "age" : 16 } // 第三個參數:insertOrUpdate, 第四個參數:是否批量更新,true就是更新全部知足條件的文檔 > db.users.update({"age": {$gte: 16}}, {$set: {"age": 25}}, false, true) WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 }) > db.users.find() { "_id" : 1, "username" : "mengday", "age" : 25 } { "_id" : 2, "username" : "mengday2", "age" : 25 } > // 查詢而後更新,更新是總體替換, 若是想更新指定的字段使用$set修改器便可 > db.users.findAndModify({ query: { "username": "mengday"}, update:{ "age": 20, "username": "mengday20" } }) { "_id" : 1, "username" : "mengday", "age" : 20, "birthday" : ISODate("2017-07-25T07:05:28.286Z") } > db.users.find() { "_id" : 1, "age" : 20, "username" : "mengday20" }