Heim  >  Artikel  >  Datenbank  >  mongoDB的shell的基本操作

mongoDB的shell的基本操作

WBOY
WBOYOriginal
2016-06-07 15:54:291056Durchsuche

打开shell 首先启动服务端mongod --dbpath d:\app\mongodata 然后打开shell:mongo localhost:27017 默认是以test用户操作,我们可以通过mongo localhost:27017/admin 增大权限 1.创建一个数据库 use [databaseName] 但是若什么也不做就退出的话这个空数据库

打开shell

首先启动服务端mongod --dbpath d:\app\mongodata

然后打开shell:mongo localhost:27017

\

默认是以test用户操作,我们可以通过mongo localhost:27017/admin 增大权限

1.创建一个数据库

use [databaseName]

但是若什么也不做就退出的话这个空数据库会被删除

2.查看所有数据库

show dbs

3.给指定数据库添加集合并且添加记录

db.[documentName].insert({...})

1.插入文档

db.[documentName].insert({})

2.批量插入文档

shell 这样执行是错误的 db.[documentName].insert([{},{},{},……..])

shell 不支持批量插入

想完成批量插入可以用mongo的应用驱动或是shell的for循环

3.Save操作

save操作和insert操作区别在于当遇到_id相同的情况下

save完成保存操作

insert则会报错

4.查看数据库中所有文档

show collections

5.查询制定文档的数据

查询所有:db.[documentName].find()

查询第一条数据:db.[documentName].findOne()

6.更新文档数据

db.[documentName].update({查询条件},{更新内容})

例子:

var p=db.persons.findOne();

db.persons.update(p,{name:"zhang"});

1.强硬的文档替换式更新操作

db.[documentName].update({查询器},{修改器})

强硬的更新会用新的文档代替老的文档

2.主键冲突的时候会报错并且停止更新操作

因为是强硬替换当替换的文档和已有文档ID冲突的时候 ,则系统会报错

3.insertOrUpdate操作

目的:查询器查出来数据就执行更新操作,查不出来就替换操作

做法:db.[documentName].update({查询器},{修改器},true)

4.批量更新操作

默认情况当查询器查询出多条数据的时候默认就修改第一条数据

如何实现批量修改

db.[documentName].update({查询器},{修改器},false, true)

7.删除文档中的数据

db.[documentName].remove({...})

例子:

db.persons.remove({name:"zhang"})

1.删除列表中所有数据

db.[documentName].remove()

集合的本身和索引不会别删除

2.根据条件删除

db.[documentName].remove({})

删除集合text中name等于uspcat的纪录

db.text.remove({name:”uspcat”})

3.小技巧

如果你想清楚一个数据量十分庞大的集合

直接删除该集合并且重新建立索引的办法

比直接用remove的效率和高很多

8.使用修改器来完成局部更新操作

\

\

. runCommand函数和findAndModify函数

runCommand可以执行mongoDB中的特殊函数

findAndModify就是特殊函数之一他的用于是返回update或remove后的文档

runCommand({“findAndModify”:”processes”,

query:{查询器},

sort{排序},

new:true

update:{更新器},

remove:true

}).value

ps = db.runCommand({

"findAndModify":"persons",

"query":{"name":"text"},

"update":{"$set":{"email":"1221"}},

"new":true

}).value

ps)

9.$addToSet与$each结合完成批量数组更新

db.text.update({_id:1000},{$addToSet:{books:{$each:[“JS”,”DB”]}}})

$each会循环后面的数组把每一个数值进行$addToSet操作

10.存在分配与查询效率

当document被创建的时候DB为其分配内存和预留内存,当修改操作

不超过预留内层的时候则速度非常快,超过了就要分配新的内存

则会消耗时间

11. 删除库中的集合 db.[documentName].drop()

删除数据库 db.dropDatabase()

12.shell里面的help

全局的help,数据库相关的db.help(),集合相关的db.[documentName].help()

注:shell客户端内置了js引擎!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn