MongoDB学习笔记

本篇文章介绍学习MongoDB的一些常用命令,希望能帮助大家.

常用操作

  • Help查看命令提示
    • db.help();
    • db.yourColl.help();
    • db.youColl.find().help();
  • 切换/创建数据库
    • use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库
  • 查询所有数据库
    • show dbs;
  • 删除当前使用数据库
    • db.dropDatabase();
  • 从指定主机上克隆数据库
    • 从指定主机上克隆数据库
  • 从指定的机器上复制指定数据库数据到某个数据库
    • db.copyDatabase("mydb", "temp", "127.0.0.1");将本机的mydb的数据复制到temp数据库中
  • 修复当前数据库
    • db.repairDatabase();
  • 查看当前使用的数据库
    • db.getName();
  • 显示当前db状态
    • db.stats();
  • 当前db版本
    • db.version();
  • 查看当前db的链接机器地址
    • db.getMongo();

Collection聚集集合操作

  • 创建一个聚集集合(table
    • db.createCollection(“collName”, {size: 20, capped: 5, max: 100});
  • 得到指定名称的聚集集合(table
    • db.getCollection("account");
  • 得到当前db的所有聚集集合
    • db.getCollectionNames();
  • 显示当前db所有聚集索引的状态
    • db.printCollectionStats();

用户相关操作

  • 添加一个用户
    • db.addUser("name");
    • db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读
  • 数据库认证、安全模式
    • db.auth("userName", "123123");
  • 显示当前所有用户
    • show users;
  • 删除用户
    • db.removeUser("userName");

聚集集合查询

  • 查询所有记录
    • db.userInfo.find(); 相当于:select* from userInfo;默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize= 50;这样每页就显示50条记录了。
  • 查询去掉后的当前聚集集合中的某列的重复数据
    • db.userInfo.distinct("name");会过滤掉name中的相同数据,相当于:select distict name from userInfo;
  • 查询age = 22的记录
    • db.userInfo.find({"age": 22}); 相当于:select * from userInfo where age = 22;
  • 查询age > 22的记录
    • db.userInfo.find({age: {$gt: 22}});
  • 查询age < 22的记录
    • db.userInfo.find({age: {$lt: 22}});
  • 查询age >= 25的记录
    • db.userInfo.find({age: {$gte: 25}});
  • 查询age >= 23 并且 age <= 26
    • db.userInfo.find({age: {$gte: 23, $lte: 26}});
  • 查询name中包含 mongo的数据
    • db.userInfo.find({name: /mongo/});
  • 查询name中以mongo开头的
    • db.userInfo.find({name: /^mongo/});
  • 查询指定列nameage数据
    • db.userInfo.find({}, {name: 1, age: 1});当然name也可以用truefalse,当用ture的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。
  • 查询指定列nameage数据, age > 25.
    • db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});
  • 按照年龄排序
    • 升序:db.userInfo.find().sort({age: 1});
    • 降序:db.userInfo.find().sort({age: -1});
  • 查询name = zhangsan, age = 22的数据
    • db.userInfo.find({name: 'zhangsan', age: 22});
  • 查询前5条数据
    • db.userInfo.find().limit(5);
  • 查询10条以后的数据
    • db.userInfo.find().skip(10);
  • 查询在5-10之间的数据
    • db.userInfo.find().limit(10).skip(5);可用于分页,limit是pageSize,skip是第几页*pageSize
  • or与 查询
    • db.userInfo.find({$or: [{age: 22}, {age: 25}]});
  • 查询第一条数据
    • db.userInfo.findOne();
    • db.userInfo.find().limit(1);
  • 查询某个结果集的记录条数
    • db.userInfo.find({age: {$gte: 25}}).count();如果要返回限制之后的记录数量,要使用count(true)或者count(非0)
    • db.users.find().skip(10).limit(5).count(true);
  • 按照某列进行排序
    • db.userInfo.find({sex: {$exists: true}}).count();

索引

  • 创建索引
    • db.userInfo.ensureIndex({name: 1});
    • db.userInfo.ensureIndex({name: 1, ts: -1});
  • 查询当前聚集集合所有索引
    • db.userInfo.getIndexes();
  • 查看总索引记录大小
    • db.userInfo.totalIndexSize();
  • 读取当前集合的所有index信息
    • db.users.reIndex();
  • 删除指定索引
    • db.users.dropIndex("name_1");
  • 删除所有索引
    • db.users.dropIndexes();

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

解决JS操作Cookies出现的乱码问题,修复WordPress评论乱码

为了解决博客纯静态之后无法记住用户信息的问题,我将这个功能改成 JS 操作 Cookie 的方式,将用户信息直接保存到用户本地 cookies 当中,从而脱离 ...

3487
来自专栏林德熙的博客

WPF DrawingVisual

为何需要学这个?如果需要画出图形,对性能有要求,或者需要了解WPF如何画图,就需要知道这个。

2332
来自专栏流浪猫的golang

golang mongoDB GridFS查询 存储 删除文件

GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等),如果没有超过16m大小可以将数据保存在BSON数据中。 Gr...

2451
来自专栏我就是马云飞

ViewGroup源码解读

我们之前刚刚分析完事件传递机制和view的源码,如果没有看过的,建议看完View的事件拦截机制浅析以及View的事件源码解析。这次我们来分析下viewgroup...

1928
来自专栏张高兴的博客

张高兴的 Xamarin.Android 学习笔记:(二)“Hello World”

3504
来自专栏水击三千

Silverlight学习(三)

最近对WCFRIA+MVVM+Prism有了初步的认识,能够简单的实现一些数据库的交互。这节主要讲的是Silverlight通过domainservice和ad...

2608
来自专栏乐沙弥的世界

MongoDB基于复制集创建索引

662
来自专栏更流畅、简洁的软件开发方式

【视频】自然框架之分页控件的使用方法(二) 下载、DLL说明和web.config的设置

  上次说的是QuickPager分页控件的PostBack的使用方式,也提供了源码下载。但是有些人下载之后发现有一大堆的文件夹,还有一大堆的DLL,到底要用哪...

2025
来自专栏我的博客

使用Jpgraph画折线图(一)

首先下载jpgraph扩展类[点击下载][下载],开启gd库支持 第一步:先画一个简单的 <?php require_once (‘jpgraph/jpgra...

2806
来自专栏Danny的专栏

在EasyUI的DataGrid中嵌入Combobox

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

7983

扫码关注云+社区

领取腾讯云代金券