连接mongodb:(mongo命令打开的是一个javascript shell。所以js语法在这里面都行得通)
mongo 192.168.18.xx:27088/ups -uusername -ppassword

mongo  192.168.6.4:27017/admin -u root -p 123456

帮助:
help
db.help()
db.mycoll.help()

切换或创建数据库:
use testdb

创建集合:
db.createCollection("mycollection") --看增加选项参数指定集合选项

用户等基本信息查询:
db.addUser('name','pwd') --增加或修改用户密码
db.system.users.find() --查看用户列表
db.auth('name','pwd') --用户认证
db.removeUser('name') --删除用户
show users --查看所有用户
show dbs --查看所有数据库
show collections --查看所有的collection
db.printCollectionStats() --查看各collection的状态
db.copyDatabase('mail_addr','mail_addr_tmp') --拷贝数据库
db.mail_addr.drop() --删除collection
db.dropDatabase() --删除当前的数据库

插入:
db.mycollection.insert({"a":"s","sd":2}) --“_id": 这个字段是数据库默认给我们加的GUID,目的就是保证数据的唯一性
或:db.mycollection.save({"a":"s","sd":2})

var data={"name":"limin", "age":22, "address":"shenzhen"}
db.mycollection.insert(data)
db.mycollection.find()
data.name="yyy"
db.mycollection.insert(data)

db.foo.save({'name':'ysz','address':{'city':'beijing','post':100096},'phone':[138,139]}) --存储嵌套的对象
db.user_addr.save({'Uid':'yushunzhi@sohu.com','Al':['test-1@sohu.com','test-2@sohu.com']}) --存储数组对象

删除:
db.mycollection.remove({}) --删除mycollection中所有数据
db.mycollection.remove({"name":"eee"}) --删除满足条件的所有数据

更新:
db.mycollection.update({"name":"www"}, {"name":"eee"}) --update方法的第一个参数为“查找的条件”,第二个参数为“更新的值” 属于整体更新(但只更新一条)
db.mycollection.update({"name":"www"}, {$inc:{"age":10}}) --局部更新,age增加10
db.mycollection.update({"name":"www"}, {$set:{"age":10}}) --局部更新,age变更为10

db.mycollection.update({"name":"www"}, {"name":"eee"},true)
db.mycollection.update({"name":"www"}, {"name":"eee"},upsert=true) --upsert操作(将update的第三个参数设为true即可),更新时如果根据条件没有查到,就在数据库里面新增一条

db.mycollection.update({"age":22}, {$set:{"age":32}},upsert=true,multi=true) --批量更新(在update的第四个参数中设为true即可), 满足条件的都更新

查询:
db.mycollection.find() 或 db.mycollection.find({}) --查询所有

db.mycollection.find().pretty() -- 改变显示方式

db.mycollection.find( { type: 'food' }, { item: 1, qty: 1, _id:0 } )   --仅返回指定字段item和qty, 不返回_id

db.mycollection.find({"age":22}) --查询age为22的
db.mycollection.findOne({"name":"www"}) --查出一条数据
db.mycollection.find({}).limit(2) --限制查询的数据条数
db.users.find().skip(3).limit(5) --从第3条(0开始的)记录开始,返回5条记录

$where查询:
db.testy.find({"$where":function(){return this.age==22}})
或:db.testy.find({"$where":"this.age==22"}) --采用$where子句查询在速度上较常规查询慢的多。因文档需要从BSON转换成javascript对象,然后通过"$where"的表达式来运行

关系查询:
"$gt", "$gte", "$lt", "$lte", "$ne", "没有特殊关键字" (>, >=, <, <=, !=, =):
db.mycollection.find({"age":{$lt:22}})

"无关键字“, "$or", "$in","$nin"(And,OR,In,NotIn):
db.mycollection.find({"age":22, "name":"www"}) --and
db.mycollection.find({$or:[{"name":"yyy"},{"age":10}]}) --or
db.mycollection.find({"age":{$in:[22, 10]}}) --in  并集

db.mycollection.find({"age":{$all:[22, 10]}}) --in  交集

db.mycollection.find({"name":/^w/}) --使用正则表达式

排序:
db.mycollection.find({}).sort({"age":-1}) --以年龄降序desc
db.mycollection.find({}).sort({"age":1}) --以年龄升序asc

子对象的查询:
db.foo.find({'address.city':'beijing'})

聚合查询:
db.mycollection.count({}) --mycollection中数据总条数
db.mycollection.count({"age":22}) --满足条件的数据条数
db.mycollection.distinct("age") --age值的不重复集合

分组group查询:
db.mycollection.group({
"key":{"age":true},
"initial":{"nihao":[]},
"$reduce":function(cur,prev){
prev.nihao.push(cur.name);
}
})

说明:
key:这个就是分组的key,我们这里是对年龄分组。
initial: 每组都分享一个”初始化函数“,特别注意:是每一组,比如这个的age=20的value的list分享一个initial函数,age=22同样也分享一个initial函数。(nihao、cur、prev是自定义的,name是待显示数据的key)
$reduce(或reduce): 这个函数的第一个参数是当前的文档对象,第二个参数是上一次function操作的累计对象,第一次为initial中的{”perosn“:[]}。有多少个文档, $reduce就会调用多少次。

db.mycollection.group({
"key":{"age":true},
"initial":{"nihao":[]},
"reduce":function(cur,prev){
prev.nihao.push(cur.name);
},
"finalize":function(prev){
prev.count=prev.nihao.length;
}
})

说明:
加上一个count属性标明每个分组中的数量
finalize:这是个函数,每一组文档执行完后,多会触发此方法,那么在每组集合里面加上count也就是它的活了。

db.mycollection.group({
"key":{"age":true},
"initial":{"nihao":[]},
"reduce":function(cur,prev){
prev.nihao.push(cur.name);
},
"finalize":function(prev){
prev.count=prev.nihao.length;
},
"condition":{"age":{$lt:25}}
})

说明:
condition:这个就是过滤条件。不满足条件的被过滤掉。

游标:
(类似延迟执行)
var cc=db.mycollection.find({}) --申明一个“查询结构”cc
cc.next() --需要的时候next读取一条
cc.forEach(function(x){print(x.age)}) --或通过for循环读取
游标枚举完了之后,游标销毁,在读取就没有数据了
例子:
var cursor = db.C.find() --定义游标
while(cursor.hasNext()){
var obj = cursor.next();
print(obj.a);
......
}

索引:
性能分析函数(explain):db.mycollection.find({}).explain()

主要字段解释:
cursor: 这里出现的是”BasicCursor",什么意思呢,就是说这里的查找采用的是“表扫描”,也就是顺序查找,很悲催啊。
nscanned: 这里是10w,也就是说数据库浏览了10w个文档,很恐怖吧,这样玩的话让人受不了啊。
n: 这里是1,也就是最终返回了1个文档。
millis: 这个就是我们最最最....关心的东西,总共耗时114毫秒。

db.mycollection.ensureIndex({"name":1}) --使用ensureIndex在name上建立了索引。1表示按照name进行升序,-1表示按照name进行降序
db.mycollection.ensureIndex({"name":1},{"unique":true}) --建立唯一索引,重复的键值自然就不能插入
db.mycollection.ensureIndex({"name":1, "age":1}) --组合索引
db.mycollection.find({}).getIndexes()
db.mycollection.getIndexKeys() --查mycollection集合的索引信息
db.mycollection.find({}).hint({"age":1}) --按自己的方案暴力执行
db.mycollection.dropIndexes("name") --删除索引

mongodb操作命令的更多相关文章

  1. mongoDB操作命令及mongoDB的helper

    此项目已开源,开源地址是: http://mongodbhelper-csharp.googlecode.com/svn/trunk/ mongodb的helper using System; usi ...

  2. mongodb系列之---副本集配置与说明

    在配置副本集之前,我们先来了解一些关于副本集的知识. 1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置 ...

  3. MongoDB的基本使用及java对MongoDB的基本增删改查

    MongoDB的特点 MongoDB 是文档存储数据库,存储结构灵活 MongoDB 支持复杂查询操作.支持序列 MongoDB 采用C++开发,可以做分布式扩展 MongoDB 采用BSON格式存储 ...

  4. Centos 7.3 安装 Mongodb

    通过yum 安装: yum install -y mongodb-server Mongodb操作命令: #启动 systemctl start mongod.service #关闭 systemct ...

  5. MongoDB基础教程(安装、操作、配置)

    MongoDB 下载安装 简易安装 # redhat, centOS sudo yum install -y mongodb # debian, ubuntu sudo apt install -y ...

  6. MongoDB常用操作命令大全

    成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作.输入help可以看到基本操作命令,只是MongoDB没有创建数据库的命令,但有类似的命令 如:如果你想创建一个 ...

  7. MongoDB基本操作命令

    由于工作需要,笔者这两天使用了一下MongoDB.真的很不习惯!但是确实好用,命令比mysql和sqlserver简单很多.在这里整理一些MongoDB的基本操作命令分享出来. 客户端的安装就不说了, ...

  8. MongoDB(1):常用操作命令大全

    MongoDB常用操作命令大全(转) http://www.jb51.net/article/48217.htm 成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操 ...

  9. MongoDB学习总结(二) —— 基本操作命令(增删改查)

    上一篇介绍了MongoDB在Windows平台下的安装,这一篇介绍一下MongoDB的一些基本操作命令. 下面我们直奔主题,用简单的实例依次介绍一下. > 查看所有数据库 (show dbs) ...

随机推荐

  1. C++基础知识(3)---new 和 delete

    学过c语言的人都知道,c语言中动态分配内存空间使用的是库函数malloc,calloc,realloc以及free.而c++中所使用的是关键字new和delete.如 动态分配 new  ,  撤销内 ...

  2. r-cnn学习(八):minibatch

    这段代码包括由输入图片随机生成相应的RoIs,并生成相应的blobs,由roidb得到相应的 minibatch.其代码如下. # ---------------------------------- ...

  3. socket的IO多路复用

    IO 多路复用 I/O多路复用指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作. Linux Linux中的 select,poll, ...

  4. Python:设计模式介绍--单例模式

    单例模式 1.单例是只有一个实例2.通过静态字段+静态字段伪造出一个单例效果3.什么时候用:当所有实例中封装的数据相同时,创建单例模式(eg:连接池) 用单例模式创建连接池: class CP: __ ...

  5. ASP.NET 保存txt文件

    public void ProcessRequest(HttpContext context) { context.Response.Clear(); context.Response.Buffer ...

  6. MySQL 5.5安装记录

    安装gnake ./configure && gmake && gmake install 安装ncurses-devel yum install -y ncurses ...

  7. Android开发之---AIDL

    在Android开发中,有时会用到多进程通信,这时,可选的方案为: 1. Bundle    :四大组件之间的进程间通信 2. 文件共享   :适合无并发情景 3. Messager : 低并发的一对 ...

  8. [BI项目记]-配置Sharepoint2013支持文档版本管理笔记

    做开发或者做方案,写文档是很重要的一个工作,我们经常需要知道文档被修改的次数,谁在什么时间修改的文档,以及在某一个版本中,都修改了哪些内容,以及不同版本的文档之间有什么差别. 如何对文档进行版本管理, ...

  9. js获取当前对象的颜色判断改变颜色

    function toHex(N) { if (N==null) return "00"; N=parseInt(N); if (N==0 || isNaN(N)) return ...

  10. ppt - 常规策划

    1 比较图2 progress3 目标 proposal4 market leadership5 分析 - 设计 - 开发 - 实施 - 评估6 innovation7 时间区间表述8 阶梯式9 主 ...