连接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. Ext 修改Store初始化加载完后修改record属性。

    /** * Created by huangbaidong on 2016/9/18. * 产品组件通用Store, */ Ext.define('app.component.ebs.itemdata ...

  2. mysql数据表拷贝

    select * into 目标表名 from 源表名 insert into 目标表名(fld1, fld2) select fld1, 5 from 源表名 以上两句都是将 源表 的数据插入到 目 ...

  3. 文本框value联动修改

    <input id="ipt-edit" value="" /><input id="ipt-target" value= ...

  4. Memcache 内存分配策略和性能(使用)状态检查

    前言: 一直在使用Memcache,但是对其内部的问题,如它内存是怎么样被使用的,使用一段时间后想看看一些状态怎么样?一直都不清楚,查了又忘记,现在整理出该篇文章,方便自己查阅.本文不涉及安装.操作. ...

  5. 基于Z-WAVE 协议的LED智能照明系统的研究笔记

    LED调光基础: ☆:LED照明调光控制信号的方式有两种: 1. 通过PWM信号控制LED灯具开关电源的占空比从而实现调光: 2. 通过调光控制信号和交流电源供电线合用的两线式或三线式(例如LED相控 ...

  6. 设置UITableView的separatorInset值为UIEdgeInsetsZero,分隔线不最左端显示的问题

    一.问题描述 UITableView分割线要显示到最左端 查看UITableView的属性,发现设置separatorInset的值可以自定义分割线的位置. @property (nonatomic) ...

  7. 实现tableview的下拉刷新

    实现tableview的下拉刷新 推荐第三方下拉刷新代码http://code4app.com/ios/%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E4%B8%8B%E6 ...

  8. iOS - 使用自定义字体-苹方字体

    苹方提供了六个字重,font-family 定义如下:苹方-简 常规体font-family: PingFangSC-Regular, sans-serif;苹方-简 极细体font-family: ...

  9. Linux yum配置文件详解

    说明:经过网上抄袭和自己的总结加实验,非常详细,可留作参考. yum的配置一般有两种方式:   一种是直接配置/etc目录下的yum.conf文件, 另外一种是在/etc/yum.repos.d目录下 ...

  10. YARN-MR 大数据第二天

    大数据第二天 1.YARN(管理和调度集群中的各类资源) 1.1 产生的背景: 1.直接源于MR版本1的缺陷(如:单点故障.难以支持MR之外的计算框架等) 2.多计算框架各自为站,数据共享困难(如:M ...