mongoDB常用语法删除数据库或集合db.collection.drop():删除整个集合,这个在实际工作中一定要慎用,如果是程序,一定要确认两次。db.dropDatabase():删除整个数据库。删除库时,一定要先进入数据库,再删除。这个在实际工作中基本不用,实际工作中可能需要保留数据和痕迹。批量插入db.test.insert([{"age":1},{"age":2},{"age":3}])modifyupdatebasicupdatemodifier$setmodifier(用于修改指定键值(key))db.collectionname.update({"id":"1"},{"$set":{age:21}})修改嵌套内容db.collectionname.update({"id:1"},$set:{user.name:"xiaoming"})$unset用于从db.collection中删除keyname.update({id:1},{$unset:{age:""}})$inc用于计算和修改db.collectionname.update({id:1},{$inc:{age:-2}})//减去2$multioption(forbatchinsert/loopinsert)db.Collection姓名。update({},{sex:'male'},{$multi:true})$upsert选项**(更新/未添加)db.collectionname.update({},{$set:{sex:"male"},{$upsert:true}})更新数组修饰符(例如:集合中有一个空数组:arr=[])$push(appendarray)db.collectionname.update({id:1},{$push:{arr:"hello"}})//相当于arr.push("hello")嵌套属性追加数组db.collectionname.update({id:1},{$push:{user.arr:"hello"}})$ne查找是否存在(存在但不追加,不存在追加)db.collectionname.update({id:1},{arr:{$ne:"hello"},{$push:{arr."hello"}})$addToSet(类似于$ne,她更简单)db.collectionname.update({id:1},{$addToSet:{arr:"hello"}})$每批附加varnewArr=["hello","world"];db.collectionname.update({id:1},{$addToSet:{arr:{$each:newArr}})$pop删除数组db。Collectionname.update({id:1},{$pop:{arr:1}})//1表示在末尾删除\-1表示在头部删除并修改数组中指定位数(类似以对象形式,毕竟数组也是对象嘛)db.collectionname.update({id:1},{$set:{arr.1:"world"}})statusreturnsdb.collectionname.update({id:1},{$set:{age:18}})varstatus=db.runco??mmand({getLastError:true})printjson(status)return:{“connectionId”:1,“updatedExisting”:true,//判断操作是否成功"n":2,"syncMillis":0,"writtenTo":null,"err":null,"ok":1}OperationSafefindAndModify翻译:查找和修改varfindAndModifyObj={findAndModify:"collectionname",query:{id:1},//按什么查找sort:false,//排序remove:false,是否删除与update冲突只能写一个upsert:false,没找到是否添加字段:[],//需要返回的字段update:{$set:{age:18}},//更新new:true//更新完成,需要查看结果,为false则不查看结果}varresult=db.runCommand(findAndModifyObj);printjson(result)queryfind()很简单Querydb.collectionname.find()//所有querydb.collectionname.find({id:1})//根据id查询过滤字段equalto1db.collectionname.find({id:1},{name:true,age:false})//返回的数据不包含年龄修饰符db.collectionname.find({id:{$lt:5}})//查找所有id字段小于5的数据$in查询一个区间db.collectionname.find({id:{$in:[1,6]}})//查询数据whoseidfieldbetween1and6$orconditionordb.collectionname.find({id:{$or:[{$in:[1,6]},{age:18}]}})//查询id字段从1到6Databetweenorage18$andconditionwithdb.collectionname.find({id:{$and:[{$in:[1,6]},{age:18}]}})//queryThedatawhichid字段在1到6之间年龄为18find()arrayquerydb.collectionname.find({arr:['hello','world']})//只精确搜索arr等于['hello','world']db.collectionname.find({arr:'hello'})//模糊搜索arr包含'hello'db.collectionname.find({arr:{$all:['hello','world']}})//且关系包含'hello'且包含'world',参数满足条件db.collectionname.find({arr:{$in:['hello','world']}})//或者关系包含'hello'或者包含'world',参数可以满足条件db.collectionname.find({arr:{$size:2}})//按长度查找ofthearraydb.Collectionname.find({},{arr:{$slice:2}})//截取返回的数据,只显示数组的前两位和最后一项。如果直接写-1,可以使用方法查询找到参数:这个是查询条件,MongoDB默认第一个参数字段:(返回内容)查询得到后显示的结果样式,可以用true和false控制是否显示。limit:返回的数字,后面跟一个数字,控制每次查询返回的结果数。skip:跳过多少个显示,结合limit可以实现分页。sort:排序方式,从小到大排序用1,从大到小排序用-1。limit和skip可用于表格分页dbd.workmate.find({},//查询条件{name:true,age:true,_id:false}//返回内容).limit(1).skip(2).sort({age:1});hansNext()是否有下一个数据vardata=db.projectname.find()while(data.hasNext()){printjson(data.next)}data.forEach(function(data){printjson(data)})数据库管理:创建、修改、删除用户创建用户:db.createUser({user:"用户名",pwd:"123456",customData:{name:'随便命名',age:18,},roles:['read']//只读权限})当然,我们也可以单独配置一个数据库的权限。比如我们现在要配置list数据库的读写权限:18,},//对list数据库有读写权限,其他只有读权限~~~~roles:[{{role:"readWrite",db:"list"},'read']})built-inroles:数据库用户角色:read、readWrite;数据库管理角色:dbAdmin、dbOwner、userAdmin;集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManage;备份和恢复角色:备份、恢复;所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase超级用户角色:root内部角色:__system查找用户信息db.system.users.find()删除用户:db.system.users.remove({user:"username"})建立权限:有时候我们需要验证用户的用户名和密码是否正确,只需需要使用MongoDB提供的声音操作也可以看成是登录操作,不过MongoDB称之为权限的建立。db.auth("jspang","123456")如果正确则返回1,如果不正确则返回0。(Error:Authenticationfailed.)启动授权重启MongoDB服务器,然后设置必须使用授权登录。启动mongod--auth后,用户只能使用用户名和密码登录,原来的mongo表单链接不再可用
