• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MongoDB > MongoDB的基础查询和索引操作方法总结

MongoDB的基础查询和索引操作方法总结

作者:kristy_yy 字体:[增加 减小] 来源:互联网 时间:2017-05-11

kristy_yy通过本文主要向大家介绍了mongodb索引,mongodb创建索引,mongodb 添加索引,mongodb查看索引,mongodb 建立索引等相关知识,希望本文的分享对您有所帮助

查询操作

1、查询所有记录

db.userInfo.find();

</div>

相当于:

select* from userInfo;
</div>

2、查询去掉后的当前聚集集合中的某列的重复数据

db.userInfo.distinct("name");
</div>

会过滤掉name中的相同数据

相当于:

select disttince name from userInfo;
</div>

3、查询age = 22的记录

db.userInfo.find({"age": 22});

</div>

相当于:

select * from userInfo where age = 22;
</div>

4、查询age > 22的记录

db.userInfo.find({age: {$gt: 22}});

</div>

相当于:

select * from userInfo where age >22;
</div>

5、查询age < 22的记录

db.userInfo.find({age: {$lt: 22}});

</div>

相当于:

select * from userInfo where age <22;
</div>

6、查询age >= 25的记录

db.userInfo.find({age: {$gte: 25}});

</div>

相当于:

select * from userInfo where age >= 25;
</div>

7、查询age <= 25的记录

db.userInfo.find({age: {$lte: 25}});

</div>

相当于:

select * from userInfo where age <= 25;
</div>

8、查询age >= 23 并且 age <= 26

db.userInfo.find({age: {$gte: 23, $lte: 26}});

</div>

相当于:

select * from userInfo where age >=23 and age <= 26;
</div>

9、查询name中包含 mongo的数据

db.userInfo.find({name: /mongo/});

</div>

相当于:

select * from userInfo where name like ‘%mongo%';
</div>

10、查询name中以mongo开头的

db.userInfo.find({name: /^mongo/});

</div>

相当于:

select * from userInfo where name like ‘mongo%';
</div>

11、查询指定列name、age数据

db.userInfo.find({}, {name: 1, age: 1});

</div>

相当于:

select name, age from userInfo;
</div>

当然name也可以用true或false,当用ture的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。

12、查询指定列name、age数据, age > 25

db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});

</div>

相当于:

select name, age from userInfo where age >25;
</div>

13、按照年龄排序

升序:

db.userInfo.find().sort({age: 1});
</div>

降序:

db.userInfo.find().sort({age: -1});
</div>

14、查询前5条数据

db.userInfo.find().limit(5);

</div>

相当于:

select * from (select * from userInfo) where rownum < 6;//oracle

select * from userInfo limit 5;//mysql

</div>

15、查询10条以后的数据

db.userInfo.find().skip(10);

</div>

相当于:

select * from userInfo where id not in (select id from (select * from userInfo) where  and rownum < 11);

16、查询在5-10之间的数据</div>
db.userInfo.find().limit(10).skip(5);
</div>

可用于分页,limit是pageSize,skip是第几页*pageSize

17、or与 查询

db.userInfo.find({$or: [{age: 22}, {age: 25}]});

</div>

相当于:

select * from userInfo where age = 22 or age = 25;
</div>

18、查询第一条数据

db.userInfo.findOne();

db.userInfo.find().limit(1);

</div>

相当于:

select * from (select * from userInfo) where and rownum < 2
</div>

19、查询某个结果集的记录条数

db.userInfo.find({age: {$gte: 25}}).count();

相当于:select count(*) from userInfo where age >= 20;

</div>


索引

1、创建索引

db.userInfo.ensureIndex({username: 1});
</div>

在MongoDB中,我们同样可以创建复合索引,如下:

db.userInfo.ensureIndex({username: 1, age: -1});
</div>

该索引被创建后,基于username和age的查询将会用到该索引,或者是基于username的查询也会用到该索引,但是只是基于age的查询将不会用到该复合索引。因此可以说,如果想用到复合索引,必须在查询条件中包含复合索引中的前N个索引列。然而如果查询条件中的键值顺序和复合索引中的创建顺序不一致的话,MongoDB可以智能的帮助我们调整该顺序,以便使复合索引可以为查询所用。如:

db.test.find({"age": 30, "username": "stephen"})
</div>

对于上面示例中的查询条件,MongoDB在检索之前将会动态的调整查询条件文档的顺序,以使该查询可以用到刚刚创建的复合索引。

2、创建唯一索引

在缺省情况下创建的索引均不是唯一索引。下面的示例将创建唯一索引,如:

db.test.ensureIndex({"userid":1},{"unique":true})
</div>

如果再次插入userid重复的文档时,MongoDB将报错,以提示插入重复键,如:

db.test.insert({"userid":5})

db.test.insert({"userid":5})

</div>
E11000 duplicate key error index: test.test.$userid_1 dup key: { : 5.0 }
</div>

如果插入的文档中不包含userid键,那么该文档中该键的值为null,如果多次插入类似的文档,MongoDB将会报出同样的错误,如:

db.test.insert({"userid1":5})

db.test.insert({"userid1"
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • mongodb处理中文索引与查找字符串详解
  • MongoDB数据库中索引(index)详解
  • MongoDB的基础查询和索引操作方法总结
  • Mongodb索引的优化
  • MongoDB索引使用详解
  • MongoDB教程之索引介绍
  • MongoDB中创建索引需要注意的事项
  • MongoDB入门教程之索引操作浅析

相关文章

  • 2017-05-11MongoDB插入、更新、删除文档实现代码
  • 2017-05-11MongoDB学习笔记—Linux下搭建MongoDB环境
  • 2017-05-11Linux服务器下MariaDB 10自动化安装部署
  • 2017-05-11MongoDB的创建、更新和删除
  • 2017-05-11如何对 MongoDB 进行性能优化(五个简单步骤)
  • 2017-05-11MongoDB快速入门笔记(七)MongoDB的用户管理操作
  • 2017-05-11在Linux ubuntu下安装mongodb的方法
  • 2017-05-11MongoDB系列教程(一):NoSQL起源
  • 2017-05-11Mongodb 副本集搭建问题总结及解决办法
  • 2017-05-11使用zabbix监控mongodb的方法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • CentOS 6.4创建Mongodb副本集
    • MongoDB数据库插入、更新和删除操作详解
    • MongoDB学习笔记之MapReduce使用示例
    • MongoDB聚合功能浅析
    • Mongodb自增id实现方法
    • MongoDB 常用命令总结
    • mongodb replica set 添加删除节点的2种方法
    • MongoDB中创建索引需要注意的事项
    • 高效mongodb的php分页类(不使用skip)
    • MongoDB快速入门笔记(六)之MongoDB的文档修改操作

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有