- 浏览: 68838 次
- 性别:
- 来自: 南京
文章分类
最新评论
1. 超级用户相关:
1. #进入数据库admin
use admin
2. #增加或修改用户密码
db.addUser('name','pwd')
3. #查看用户列表
db.system.users.find()
4. #用户认证
db.auth('name','pwd')
5. #删除用户
db.removeUser('name')
6. #查看所有用户
show users
7. #查看所有数据库
show dbs
8. #查看所有的collection
show collections
9. #查看各collection的状态
db.printCollectionStats()
10. #查看主从复制状态
db.printReplicationInfo()
11. #修复数据库
db.repairDatabase()
12. #设置记录profiling,0=off 1=slow 2=all
db.setProfilingLevel(1)
13. #查看profiling
show profile
14. #拷贝数据库
db.copyDatabase('mail_addr','mail_addr_tmp')
15. #删除collection
db.mail_addr.drop()
16. #删除当前的数据库
db.dropDatabase()
2. 增删改
db.test.find({id:10}) 返回test数据集ID=10的数据集
db.test.find({id:10}).count() 返回test数据集ID=10的数据总数
db.test.find({id:10}).limit(2) 返回test数据集ID=10的数据集从第二条开始的数据集
db.test.find({id:10}).skip(8) 返回test数据集ID=10的数据集从0到第八条的数据集
db.test.find({id:10}).limit(2).skip(8) 返回test数据集ID=1=的数据集从第二条到第八条的数据
db.test.find({id:10}).sort() 返回test数据集ID=10的排序数据集
db.test.findOne([query]) 返回符合条件的一条数据
db.test.getDB() 返回此数据集所属的数据库名称
db.test.getIndexes() 返回些数据集的索引信息
db.test.group({key:...,initial:...,reduce:...[,cond:...]})
db.test.mapReduce(mayFunction,reduceFunction,<optional params>)
db.test.remove(query) 在数据集中删除一条数据
db.test.renameCollection(newName) 重命名些数据集名称
db.test.save(obj) 往数据集中插入一条数据
db.test.stats() 返回此数据集的状态
db.test.storageSize() 返回此数据集的存储大小
db.test.totalIndexSize() 返回此数据集的索引文件大小
db.test.totalSize() 返回些数据集的总大小
db.test.update(query,object[,upsert_bool]) 在此数据集中更新一条数据
db.test.validate() 验证此数据集
db.test.getShardVersion() 返回数据集共享版本号
3、MongoDB语法与现有关系型数据库SQL语法比较
MongoDB语法 MySql语法
db.test.find({'name':'foobar'}) <==> select * from test where name='foobar'
db.test.find() <==> select * from test
db.test.find({'ID':10}).count() <==> select count(*) from test where ID=10
db.test.find().skip(10).limit(20) <==> select * from test limit 10,20
db.test.find({'ID':{$in:[25,35,45]}}) <==> select * from test where ID in (25,35,45)
db.test.find().sort({'ID':-1}) <==> select * from test order by ID desc
db.test.distinct('name',{'ID':{$lt:20}}) <==> select distinct(name) from test where ID<20
db.test.group({key:{'name':true},cond:{'name':'foo'},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}}) <==> select name,sum(marks) from test group by name
db.test.find('this.ID<20',{name:1}) <==> select name from test where ID<20
db.test.insert({'name':'foobar','age':25})<==>insert into test ('name','age') values('foobar',25)
db.test.remove({}) <==> delete * from test
db.test.remove({'age':20}) <==> delete test where age=20
db.test.remove({'age':{$lt:20}}) <==> elete test where age<20
db.test.remove({'age':{$lte:20}}) <==> delete test where age<=20
db.test.remove({'age':{$gt:20}}) <==> delete test where age>20
db.test.remove({'age':{$gte:20}}) <==> delete test where age>=20
db.test.remove({'age':{$ne:20}}) <==> delete test where age!=20
db.test.update({'name':'foobar'},{$set:{'age':36}}) <==> update test set age=36 where name='foobar'
db.test.update({'name':'foobar'},{$inc:{'age':3}}) <==> update test set age=age+3 where name='foobar'
4. 索引
1. #增加索引:1(ascending),-1(descending)
2. db.foo.ensureIndex({firstname: 1, lastname: 1}, {unique: true});
3. #索引子对象
4. db.user_addr.ensureIndex({'Al.Em': 1})
5. #查看索引信息
6. db.foo.getIndexes()
7. db.foo.getIndexKeys()
8. #根据索引名删除索引
9. db.user_addr.dropIndex('Al.Em_1')
5. advanced queries:高级查询
条件操作符
$gt : >
$lt : <
$gte: >=
$lte: <=
$ne : !=、<>
$in : in
$nin: not in
$all: all
$not: 反匹配(1.3.3及以上版本)
查询 name <> "bruce" and age >= 18 的数据
db.users.find({name: {$ne: "bruce"}, age: {$gte: 18}});
查询 creation_date > '2010-01-01' and creation_date <= '2010-12-31' 的数据
db.users.find({creation_date:{$gt:new Date(2010,0,1), $lte:new Date(2010,11,31)});
查询 age in (20,22,24,26) 的数据
db.users.find({age: {$in: [20,22,24,26]}});
查询 age取模10等于0 的数据
db.users.find('this.age % 10 == 0');
或者
db.users.find({age : {$mod : [10, 0]}});
匹配所有
db.users.find({favorite_number : {$all : [6, 8]}});
可以查询出{name: 'David', age: 26, favorite_number: [ 6, 8, 9 ] }
可以不查询出{name: 'David', age: 26, favorite_number: [ 6, 7, 9 ] }
查询不匹配name=B*带头的记录
db.users.find({name: {$not: /^B.*/}});
查询 age取模10不等于0 的数据
db.users.find({age : {$not: {$mod : [10, 0]}}});
#返回部分字段
选择返回age和_id字段(_id字段总是会被返回)
db.users.find({}, {age:1});
db.users.find({}, {age:3});
db.users.find({}, {age:true});
db.users.find({ name : "bruce" }, {age:1});
0为false, 非0为true
选择返回age、address和_id字段
db.users.find({ name : "bruce" }, {age:1, address:1});
排除返回age、address和_id字段
db.users.find({}, {age:0, address:false});
db.users.find({ name : "bruce" }, {age:0, address:false});
数组元素个数判断
对于{name: 'David', age: 26, favorite_number: [ 6, 7, 9 ] }记录
匹配db.users.find({favorite_number: {$size: 3}});
不匹配db.users.find({favorite_number: {$size: 2}});
$exists判断字段是否存在
查询所有存在name字段的记录
db.users.find({name: {$exists: true}});
查询所有不存在phone字段的记录
db.users.find({phone: {$exists: false}});
$type判断字段类型
查询所有name字段是字符类型的
db.users.find({name: {$type: 2}});
查询所有age字段是整型的
db.users.find({age: {$type: 16}});
对于字符字段,可以使用正则表达式
查询以字母b或者B带头的所有记录
db.users.find({name: /^b.*/i});
$elemMatch(1.3.1及以上版本)
为数组的字段中匹配其中某个元素
Javascript查询和$where查询
查询 age > 18 的记录,以下查询都一样
db.users.find({age: {$gt: 18}});
db.users.find({$where: "this.age > 18"});
db.users.find("this.age > 18");
f = function() {return this.age > 18} db.users.find(f);
排序sort()
以年龄升序asc
db.users.find().sort({age: 1});
以年龄降序desc
db.users.find().sort({age: -1});
限制返回记录数量limit()
返回5条记录
db.users.find().limit(5);
返回3条记录并打印信息
db.users.find().limit(3).forEach(function(user) {print('my age is ' + user.age)});
结果
my age is 18
my age is 19
my age is 20
限制返回记录的开始点skip()
从第3条记录开始,返回5条记录(limit 3, 5)
db.users.find().skip(3).limit(5);
查询记录条数count()
db.users.find().count();
db.users.find({age:18}).count();
以下返回的不是5,而是user表中所有的记录数量
db.users.find().skip(10).limit(5).count();
如果要返回限制之后的记录数量,要使用count(true)或者count(非0)
db.users.find().skip(10).limit(5).count(true);
分组group()
假设test表只有以下一条数据
{ domain: "www.mongodb.org"
, invoked_at: {d:"2009-11-03", t:"17:14:05"}
, response_time: 0.05
, http_action: "GET /display/DOCS/Aggregation"
}
使用group统计test表11月份的数据count:count(*)、total_time:sum(response_time)、avg_time:total_time/count;
db.test.group(
{ cond: {"invoked_at.d": {$gt: "2009-11", $lt: "2009-12"}}
, key: {http_action: true}
, initial: {count: 0, total_time:0}
, reduce: function(doc, out){ out.count++; out.total_time+=doc.response_time }
, finalize: function(out){ out.avg_time = out.total_time / out.count }
} );
[
{
"http_action" : "GET /display/DOCS/Aggregation",
"count" : 1,
"total_time" : 0.05,
"avg_time" : 0.05
}
]
转载自:http://www.9958.pw/post/mongodb_shell
发表评论
-
项目管理之如何控制项目进度和质量
2016-07-16 22:37 606控制项目进度和质量首先在整体上要有一个合理清晰的流程,并且在整 ... -
15 个非常棒的 CSS3 效果教程
2016-07-03 20:42 5881. 创建一个漂亮的图标 这个教程将教你如何用纯 C ... -
前20名的不安全密码(需要避免)
2016-07-01 21:41 514下图举例说明了一些人们作出选择密码时最常用的错误,以及如何使你 ... -
js实现图片放大缩小后进行的复杂排序
2016-06-30 21:57 584首先,我们来讲下需求: 1.图片分为大小和小图,大图占四个小 ... -
史上最全ajax(原生JS,javascript版,非jquery)详细注释!
2016-06-29 22:31 810史上最全ajax详细注释!(原生JS,javascript版, ... -
php千万级pv架构经验分享
2016-06-28 22:04 1294转载自:http://www.9958.pw/post/ph ... -
ecshop 时间问题请注意 /data/config.php
2016-06-27 22:43 866ecshop 处理时间,绕来绕去, 后台的时区设置, 并非以 ... -
目前比较流行的二维码的生成
2016-06-26 23:55 584最近比较流行二维码,自己百度了一下发现有一个很不错的实现方法使 ... -
如何阻止移动设备(手机,pad)浏览器双击放大网页?
2016-06-24 22:29 1214现在的手机或平板电脑等移动设备上的浏览器默认都有双击放大的设置 ... -
PHP解决Xss跨域攻击以及sql注入等危险字符串方案类库
2016-06-19 21:45 778由于该模块在项目中的要求是 不能提示任何信息,也不作断点操作, ... -
网站敏感骂人词库及算法(附6仟个敏感词)
2016-06-16 22:07 5885原文:「我今天开着张三丰田去上班 」 strtr:「我今天开 ... -
jQuery制作元素在屏幕中水平垂直居中效果
2016-06-14 21:56 599jQuery.fn.center = function () ... -
纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等)
2016-06-11 21:32 9761、正方形 CSS代码如下: #square { widt ... -
分享一个JQuery写的点击上下滚动的小例子
2016-06-08 22:00 502效果图 演示地址 源码下载 <!--more--> ... -
精美的国外扁平化网页设计作品
2016-06-05 16:02 598Who Wanna <!--more--> ... -
提交您的博客到各大网站
2016-06-03 21:04 381各大搜索引擎网站登录入口: Google收录入口:http:/ ... -
推荐7个 CSS3 制作的创意下拉菜单效果
2016-06-02 22:15 4021. 使用 jQuery 和 CSS3 制作向下滑动的导航菜单 ... -
Dev Http Client(Chrome的HTTP插件)
2016-05-31 22:34 755Dev Http Client(Chrome的HTTP插件) ... -
好的用户界面-界面设计的一些技巧
2016-05-29 16:24 4021 尽量使用单列而不是 ... -
项目组制定的一份页面优化指南
2016-05-27 21:40 3641.文档声明 文档声明必须置于网页的HTML部分的最开始,标签 ...
相关推荐
### MongoDB常用命令详解 #### 一、数据库管理 在MongoDB中,数据库是存储文档的容器,通过一系列的命令可以方便地对数据库进行管理和操作。 ##### 1. 帮助命令 (Help) - **命令格式**: `help`, `db.help()`, `db...
MongoDB 常用命令 MongoDB 是一个流行的 NoSQL 数据库,提供了丰富的命令来管理和维护数据库。在本文中,我们将介绍一些 MongoDB 常用的命令,包括集合命令、数据库命令和其他命令。 集合命令 1. `db.collection....
在centos7下安装部署mongodb分片+副本集群常用命令整理,内容包含,安装、配置、启动、访问shell终端等命令
mongodb php distinct command --- mongoDb 常用命令
通常,它会包含启动MongoDB服务的命令,例如使用`mongod.exe`并指定配置文件路径。 2. **启动MongoDB服务**: - `NET START MongoDB.bat`:这是一个Windows批处理命令,用于启动名为MongoDB的服务。`NET START`...
包含对数据库、集合、文档的常用操作。
MongoDB 是一种流行的开源文档型数据库,以其灵活性...以上就是MongoDB中涉及的一些常用命令,它们涵盖了数据库管理、集合操作、用户管理和数据查询等多个方面。理解并熟练掌握这些命令对于日常的MongoDB操作至关重要。
在日常使用中,MongoDB的这些命令对于数据的管理、查询和维护至关重要。通过灵活运用这些命令,开发者可以高效地处理和管理大规模的非结构化和半结构化数据,实现高并发和高性能的数据访问。由于其优秀的性能表现和...
例如,通过`use`命令切换数据库,`db.addUser()`和`db.removeUser()`分别用于添加和删除用户,`db.auth()`进行用户认证,`db.collection.drop()`删除集合,`db.dropDatabase()`删除整个数据库,`db.collection.save...
本手册涵盖了MongoDB的基础操作,旨在帮助初学者快速掌握其核心命令,以下是15条常用命令的详细说明: 1. **启动MongoDB服务**:在命令行中输入`mongod`启动MongoDB服务器,通常需要指定数据存储目录,如`mongod --...
MongoDB常用命令: 超级用户相关: use admin #增加或修改用户密码 db.addUser(ixigua,’pwd’) #查看用户列表 db.system.users.find() #用户认证 db.auth(ixigua,’pwd’) #删除用户 db.removeUser(...
MongoDB常用操作命令大全 数据库常用命令 Collection聚集集合 用户相关 聚集集合查询
MongoDB提供的这些命令和操作使得开发者能够高效地处理各种数据需求,无论是简单的数据存储还是复杂的查询分析,MongoDB都提供了强大的工具来支持。在处理大量数据时,其性能优势尤为明显,尤其适合需要快速查询和...
MongoDB 数据库常用命令大全 MongoDB 是 NoSQL 数据库系统中比较流行的数据库之一。它也是最接近关系型数据库的,一个数据库可以包含多个集合(Collection),类似于关系数据库中的表;而每个集合中可以存储一组由...
本文将深入探讨在MongoDB中常见的数据库操作命令,这些命令对于理解和操作MongoDB至关重要。 首先,让我们来看一下如何根据年龄对数据进行排序。在MongoDB中,可以使用`sort()`函数来对查询结果进行排序。例如,...
以下是一些主要的MongoDB操作命令的详细解释: 1. **数据库相关操作**: - `use <database>`:切换当前工作数据库。例如,`use myDatabase` 将会切换到名为myDatabase的数据库。 - `db`:显示当前工作数据库。 -...
接下来将详细介绍文档中出现的MongoDB常用管理命令及其相关的知识点。 1. 启动MongoDB服务 - `mongod` 是MongoDB数据库服务器的命令行工具,用于启动数据库实例。 - 通常需要指定`--dbpath`参数来指定数据库存储...