mongoDB命令集合,更新中。。。

所有MongoDB的方法都使用首字母小写的驼峰式写法
1.show dbs,查看存在数据库命令,默认有local、admin(config),这是MongoDB的默认数据库,我们在新建库时是不允许起这些名称;
2.db.version(),查看数据库版本命令;
3.use admin: 进入数据库,也可以理解成为使用数据库。成功显示:switched to db admin;
4.use db(建立数据库):use不仅可以进入一个数据库,如果你敲入的库不存在,它还可以帮你建立一个库。但是在没有集合前,它还是默认为空。
5.show collections: 显示数据库中的集合(关系型中叫表);
6.db:显示当前位置,显示当前使用的数据库名称;
7.db.集合.insert( ):新建数据集合和插入文件(数据),当集合没有时,这时候就可以新建一个集合,并向里边插入数据。

Demo:db.集合名.insert({“name”:”name1”});

批量插入数据:用数组插入效率高

var tempArray = []              //声明一个数组
for(let i=0;i<1000;i++){        //循环向数组中放入值
    tempArray.push({num:i});
}
db.集合名.insert(tempArray)  

8.db.集合.find( ):查询所有数据,这条命令会列出集合下的所有数据,可以看到MongoDB是自动给我们加入了索引值的。

Demo:db.集合名.find();

9.db.集合.findOne( ):查询第一个文件数据;
db.集合.update({查询},{修改}):修改文件数据,第一个是查询条件,第二个是要修改成的值。可以多加文件数据项;

Demo:db.集合名.update({"name":"name1"},{"name":"name2","age":"2"});

10.db.集合.remove(条件):删除文件数据,注意的是要跟一个条件。

Demo:db.集合名.remove({“name”:”name1”})

11.db.集合.drop( ):删除整个集合,这个在实际工作中一定要谨慎使用,如果是程序,一定要二次确认。
12.db.dropDatabase( ):删除整个数据库,在删除库时,一定要先进入数据库,然后再删除。

用js文件写mongo命令:

    var userName="yyy";    //声明一个登录名             
    var timeStamp=Date.parse(new Date());     //声明登录时的时间戳  
    var jsonDdatabase={"loginUnser":userName,"loginTime":timeStamp}; //组成JSON字符串
    var db = connect('log');   //链接数据库
    db.集合名.insert(jsonDdatabase);  //插入数据
    print('[demo]log  print success');  //没有错误显示成功

修改器
$set修改器:用来修改一个指定的键值(key);

Demo:  db.集合名.update({"name":"something"},{"$set":{sex:0,age:21}});

修改嵌套内容(内嵌文档):同对象取值

Demo:  db.集合名.update({"name":"something"},{"$set":{"skill.skillThree":'PHP'}})

$unset用于将key删除

Demo:  db.集合名.update({"name":"something"},{$unset:{"age":''}});

$inc对数字进行计算:对value值的修改,修改的必须是数字,字符串无效。

Demo:  db.集合名.update({"name":"something"},{$inc:{"age":-2}})

multi选项
multi有ture和false两个值,true代表全部修改,false代表只修改一个(默认值)

Demo: db.集合名.update({},{$set:{interset:[]}},{multi:true});

upsert选项
upsert在找不到数据的情况下,直接插入。upsert有两个值:true代表没有就添加,false代表没有不添加(默认值)。

db.集合名.update({name:'xiaoWang'},{$set:{age:20}},{upsert:true})

** $push追加数组/内嵌文档值**
$push的功能是追加数组中的值,经常用它操作内嵌稳文档,就是{}对象型的值。

db.集合名.update({name:'xiaoWang'},{$push:{interest:'sing'}});//新增

$addToSet:检查一个值是否存在,如果不存在再执行操作,存在就不执行

db.集合名.update({name:"xiaoWang"},{$addToSet:{interest:"readBook"}})

$each 批量追加

var newInterset=["Sing","Dance","Code"];
db.集合名.update({name:"xiaoWang"},{$addToSet:{interest:{$each:newInterset}}})

$pop 删除数组值
$pop只删除一次,并不是删除所有数组中的值。而且它有两个选项,一个是1和-1。

1:从数组末端进行删除
-1:从数组开端进行删除

db.集合名.update({name:'xiaoWang'},{$pop:{interest:1}});
db.集合名.update({name:'xiaoWang'},{$pop:{interest:-1}});

数组定位修改
index从0开始

db.集合名.update({name:'xiaoWang'},{$set:{"interset.1":"Code"}});

db.runCommand( ):
数据库运行命令的执行器,执行命令首选就要使用它,它在Shell和驱动程序间提供了一致的接口。

db.集合名.update({sex:1},{$set:{money:1000}},false,true)
var resultMessage=db.runCommand({getLastError:1})
printjson(resultMessage);

常用参数:
false:第一句末尾的false是upsert的简写,代表没有此条数据时不增加;
true:true是multi的简写,代表修改所有,这两个我们在前边课程已经学过。
getLastError:1 :表示返回功能错误,这里的参数很多。。。
printjson:表示以json对象的格式输出到控制台。
db.listCommands( ):查看所有的Commad命令。

:findAndModify
属性值:
query:需要查询的条件/文档
sort: 进行排序
remove:[boolean]是否删除查找到的文档,值填写true,可以删除。
new:[boolean]返回更新前的文档还是更新后的文档。
fields:需要返回的字段
upsert:没有这个值是否增加。

索引
建立索引:eg:db.集合名.ensureIndex({username:1});
查看现有索引:db.集合名.getIndexes();
复合索引:

eg:var  rs= db.集合名.find({username:'7xwb8y3',randNum0:565509});
 		rs.forEach(rs=>{printjson(rs)});

指定索引查询(hint)

eg:var  rs= db.集合名.find({username:'7xwb8y3',randNum0:565509}).hint({randNum0:1});

删除索引:

eg:db.集合名.dropIndex('randNum0_1');//索引的唯一ID

全文索引:

两个关键修饰符:
$text:表示要在全文索引中查东西。
$search:后边跟查找的内容。
eg:db.集合名.find({$text:{$search:"programmer"}})

** 查找多个词 **
全文索引是支持多个次查找的,比如我们希望查找数据中有programmer,family,diary,drink的数据(这是或的关系),所以两条数据都会出现。
eg:

db.集合名.find({$text:{$search:"programmer family diary drink"}})
使用“-”减号来取消
db.集合名.find({$text:{$search:"programmer family diary -drink"}})
转移符:
eg:搜索的是两个词(love PlayGame和drink),这时候需要使用\斜杠来转意
db.info.find({$text:{$search:"\"love PlayGame\" drink"}});

管理:用户的创建、删除与修改
一、创建用户可以用db.createUser方法

db.createUser({
    user:"XXX",
    pwd:"123456",
    customData:{
        name:'xxx',
        email:'[email protected]',
        age:18,
    },
    roles:[       //compay数据库的权限为读写
        {
            role:"readWrite",
            db:"company"
        },
        'read'
    ]
})

内置角色:
数据库用户角色:read、readWrite;
数据库管理角色:dbAdmin、dbOwner、userAdmin;
集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManage;
备份恢复角色:backup、restore;
所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
超级用户角色:root
内部角色:__system

查找用户信息:db.集合名.users.find();
删除用户:db.集合名.users.remove({user:“xxx”});
建权:验证用户的用户名密码是否正确,就需要用到MongoDB提供的健全操作
db.auth(“xxx”,“123456”)
如果正确返回1,如果错误返回0。(Error:Authentication failed。)
启动建权:重启MongoDB服务器,然后设置必须使用建权登录。
mongod --auth
启动后,用户登录只能用用户名和密码进行登录,原来的mongo形式链接已经不起作用了。相应的用户权限也对应妥当。项目中我们启动服务器必须使用建权形式。
建权之后登陆:mongom -u 用户名 -p 密码 127.0.0.1:27017/admin

管理:备份和还原
mongodump备份的基本格式。

mongodump
    --host 127.0.0.1
    --port 27017
    --out D:/databack/backup
    --collection myCollections
    --db test
    --username username
    --password password

还原:mongorestore

mongorestore
    --host 127.0.0.1
    --port 27017
    --username username
    --password password
    <path to the backup>
发布了19 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43392673/article/details/100519420
今日推荐