> 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" }