MongoDB学习笔记(二)——MongoShell中文件的增删改本文所用MongoDB版本为4.0。version();4.0.101.Insertadocument1.Insertadocument语法:db..insert(document)Insertadocumentintotheusercollectioninthetestdatabase:>usetest;switchedtodbtest>db.user.insert({"username":"Tom","age":10})WriteResult({"nInserted":1})>db.user.find(){"_id":ObjectId("5d2f0a4714077ad0dab139c5"),"username":"Tom","age":10}注意:_id字段是系统自动生成的,你也可以自己指定任意类型的词,但值不能重复。2.插入多个文档语法:db..insert([document1,document2,...,documentN])将多个文档插入到测试数据库的用户集合中:>db.user.insert([...{“用户名”:“玛丽”,“年龄”:30},...{“用户名”:“马丁”,“年龄”:40},...{“用户名”:“卡丁车”,“年龄”:50},...{“用户名”:“杰克”,“年龄”:20}...])BulkWriteResult({“writeErrors”:[],“writeConcernErrors”:[],“nInserted”:4,“nUpserted”:0,“nMatched”:0,“nModified”:0,“nRemoved”:0,“upserted”:[]})>db.user.find(){“_id”:ObjectId(“5d2f0a4714077ad0dab139c5”),“用户名”:“汤姆”,“年龄”:10}{“_id”:ObjectId(“5d2f102414077ad0dab139c7”),“用户名”:“玛丽”,“年龄”:30}{“_id”:ObjectId(“5d2f103414077ad0dab139c8"),"username":"Martin","age":40}{"_id":ObjectId("5d2f105414077ad0dab139c9"),"username":"kart","age":50}{"_id":ObjectId(“5d2f11b814077ad0dab139ca”),“用户名”:“杰克”,“年龄”:20}二、删除数据语法:db..remove(condition)删除用户集合中名称等于“Jack”的文档>db.user.find(){"_id":ObjectId("5d2f0a4714077ad0dab139c5“),“用户名”:“汤姆”,“年龄”:10}{“_id”:ObjectId(“5d2f102414077ad0dab139c7”),“用户名”:“玛丽”,“年龄”:30}{“_id”:ObjectId(“5d2f103414077ad0dab139c8”),“用户名”:“马丁”,“年龄”:40}{“_id”:ObjectId(“5d2f105414077ad0dab139c9”),“用户名”:“卡丁车”,“年龄”:50}{“_id”:ObjectId("5d2f11b814077ad0dab139ca"),"用户名":"Jack","age":20}>db.user.remove({"username":"Jack"})WriteResult({"nRemoved":1})>db.user.find(){"_id":ObjectId("5d2f0a4714077ad0dab139c5"),"username":"Tom","age":10}{"_id":ObjectId("5d2f102414077ad0dab139c7"),"username":"Mary“,“年龄”:30}{“_id”:ObjectId(“5d2f103414077ad0dab139c8”),“用户名”:“马丁”,“年龄”:40}{“_id”:ObjectId(“5d2f105414077ad0dab139c9”),“用户名”:"kart","age":50}三、修改数据语法:update(条件,数据,是否添加,是否修改多项)修改用户集合中年等大于10的修改为20方法一:varu=db.user.findOne({"age":10});u.age=20;db.user.update({"age":10},u)或db.user.save(u);>varu=db.user.findOne({"age":10})>u.age=2020>db.user.save(u)WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.user.find(){"_id":ObjectId("5d2f0a4714077ad0dab139c5"),"username":"Tom","age":20}{“_id”:ObjectId(“5d2f102414077ad0dab139c7”),“用户名”:“Mary”,“年龄”:30}{“_id”:ObjectId(“5d2f103414077ad0dab139c8”),“用户名”:“Martin”,“年龄”:40}{"_id":ObjectId("5d2f105414077ad0dab139c9"),"username":"kart","age":50}方法二:db.user.update(query,object[,upsert_bool,multi_bool])>varu=db.user.findOne({"age":20})>u.age=1010>db.user.update({"age":20},u)WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.user.find(){"_id":ObjectId("5d2f0a4714077ad0dab139c5"),"username":"Tom","age":10}{"_id":对象ID(“5d2f102414077ad0dab139c7”),“用户名”:“玛丽”,“年龄”:30}{“_id”:ObjectId(“5d2f103414077ad0dab139c8”),“用户名”:“马丁”,“年龄”:40}{“_id”:ObjectId("5d2f105414077ad0dab139c9"),"username":"kart","age":50}upsert_bool:如果没有满足查询条件的记录,是否新建一条记录注:如果有多条记录满足{"age":10},只会修改第一条记录。您可以将第四个参数设置为true以修改所有记录。修改数据容易出错的地方如果有这样的数据:{"_id":1,"username":"abc","age":20,"sex":"boy"}想修改年龄为22岁old,错误代码如下:varu=db.user.update({"_id":1},{"age":22})记录修改后变为:{"_id":1,"age":22}是正确的方法:varu=db.user.find({"_id":1});-->取出记录u.age=22;-->基本上是修改db.user.save(u)ordbontheoriginalrecord.user.update({"_id":1},u)四、修饰符的使用1.$inc:添加一个数字来添加汤姆的年龄2>db.user.update({"username":"Tom"},{$inc:{"age":2}})WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.user.find({"username":"Tom"}){"_id":ObjectId("5d2f0a4714077ad0dab139c5"),"username":"Tom","age":12}2.$set:修改一个字段,如果该字段不存在,则添加该字段修改Tom的电话号码为10086,如果没有该字段,则添加该字段>db.user.update({"username":"Tom"},{$set:{"tel":"10086"}})WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.user.find({"用户名":“汤姆”}){“_id”:ObjectId(“5d2f0a4714077ad0dab139c5”),“用户名”:“汤姆”,“age":12,"tel":"10086"}修改数组3.$push:向数组添加元素添加一个朋友到Tom的朋友Jack>db.user.update({"username":"Tom"},{$push:{"friend":"Jack"}})WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.user.find({"username":"Tom"},{"username":1,"friend":1}){"_id":ObjectId("5d2f0a4714077ad0dab139c5"),"username":"Tom","friend":["Jack"]}4.$each:遍历操作元素,将好友“Mary”、“Jocker”批量添加到Tom的好友中。>db.user.update({"username":"Tom"},{$push:{"friend":{$each:["Mary","Jocker"]}}})WriteResult({"nMatched":1,“nUpserted”:0,“nModified”:1})>db。用户。查找({“用户名”:“汤姆”},{“用户名”:1,“朋友”:1}){“_id”:ObjectId(“5d2f0a4714077ad0dab139c5”),“用户名”:“汤姆”,“朋友”:[“杰克”、“玛丽”、“小丑”]}5。$pop:从abc数组的开头或结尾获取数据从friends中删除最后一个朋友>db.user.update({"username":"Tom"},{$pop:{"friend":1}})WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.user.find({"username":"Tom"},{"username":1,"friend":1}){"_id":ObjectId("5d2f0a4714077ad0dab139c5"),"username":"Tom","friend":["Jack","Mary"]}从abc的朋友中删除第一个朋友>db.user。update({"username":"Tom"},{$pop:{"friend":-1}})WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.user.find({"username":"Tom"},{"username":1,"friend":1}){"_id":ObjectId("5d2f0a4714077ad0dab139c5"),"username":"Tom","friend":["Mary"]}6.$unset:deleteafielddeleteTom'sfriendfield>db.user.update({"username":"Tom"},{$unset:{"friend":""}})WriteResult({"nMatched":1,"nUpserted":0,"nModified":1})>db.user.find({"username":"Tom"}){"_id":ObjectId("5d2f0a4714077ad0dab139c5"),"username":"Tom","age":12,"tel":"10086"}在MongoDB中的修改、删除和更新都是瞬间完成的是的,即client只向server发送命令,并不检查命令是否执行成功,可以通过执行每条命令后执行 getLastError检查是否成功!>db.runCommand({"getLastError":1}){"connectionId":1,"n":0,"syncMillis":0,"writtenTo":null,"err":null,"ok":1}