进入mongo

mongo

查看数据库

show dbs;/show databases();

第一个命令简单(admin和local数据库是系统自带的)

进入/创建数据库

use 数据库名字(如果有此数据库则进入,如果没有则会添加一个,)

新的数据库因为没有数据,所以show dbs;查看数据库不会显示,等我们在新的数据库内插入数据后show dbs查看数据库;就能看的到了(下面会讲)

插入数据

db.你要创建的表名字.insert({"name":"B",age:20});

解析:db和insert是数据库命令,text是你自己创建的表(如何查看表下面会讲)名字,创建的字段,要按字典形式创建,数字不用引号,其他的要引号

查看你当前所在的数据库

db

db.getName();

查看当前所在数据库的集合(也叫表)

show.tables;

show collections;

两个命令都可以用

system.indexes是系统自带的。

单纯只创建集合(也叫表)不带数据,上面db.text.insert({})是创建表是插入数据

db.createCollection('good');

good:是你你自己创建集合的名字

集合的命名:

① 不能是空字符串(“ ”)

② 不能包含\0字符(空字符)

③ 不能使用system.的前缀(系统保留)

④ 建议不包含保留字 ”$”

⑤ 用.分割不同命名空间的子集合(如:blog.users, blog.posts)

删除集合

db.good.drop()

good:是你要删除的集合的名字

返回true是说删除成功,如果你要删除不存在的集合会返回false

删除数据库:

db.dropDatabase();

查看当前数据状态

db.stats();

以上就是mongo的大致命令,

查询表内所有字段

db.当前集合(表).find();

写入数据

一条一条的插入数据

一次性插入多条

db.数据表.insert([{},{},{}.......])

多维数据对象添加

db.goods.insert({name:'xiaomi5',price:1999,weight:156,number:45,area:{province:'beijing',city:'beijing'}})

数组信息的添加

示例:

db.goods.insert({name:'xiaomimax',price:2000,weight:180,number:100,area:{province:'beijing',city:'beijing'},color:['blank','white','red']})

保存数据

db.集合名称.save(文档)

_id如果数据不存在则添加,如果数据存在则修改(必须是下划线_id,不能是id)

修改id为5的年龄

.pretty():

mongodb的find().pretty()方法的作用。

使得查询出来的数据在命令行中更加美观的显示,不至于太紧凑。

新增数据的另外一种方法

使用一个变量接收

数据查询

查询所有(上面讲过)

db.数据表.find();

查询一条

db.数据表.findOne();注意大小写

条件限制查询

db.数据表.find(条件);

db.数据表.findOne(条件);

范围条件查询

关键字:$gt:>   $lt:<    $gte:>=   $lte<=

db.goods.find({price:{‘$gt’:1005}})

注意:关键字$gt左右必须有引号,在命令行:单双引号都可以

$gt:>

$gte:>=

$lt:<

$lte<=

设置多个查询条件

db.数据表。find({条件1,条件2})

例如:要求价格大于1000并且重量小于100的

db.goods.find({price:{‘$gt’:1000},weight:{‘$lt’:100}})

或者通过严格等于的条件进行查询复合查询

例如:价格大于1000,并且重量等于50

db.goods.find({price:{'$gt':1000},weight:50})

多维字段的查询

db.表.find({‘key.name’:值})

db.goods.find({'area.city':'beijing'});

db.表.find({key.name:{‘$gt’:值},key2.name2:{‘$lt’:值}})

数组条件的限制

db.表.find({数组的那个字段名:val})

//数组元素值  有 val 即可(存在一个元素)

列如:db.goods.find({color:’red’})   //查询颜色有红色记录条数,满足一个元素即可

地下这种方法必须按照文档格式查询,位置不能错,不能多,不能少,不能写错

db.表.find({字段(数组):{‘$all’:[v1,v2]}})

////数组元素值  存在 v1和v2 即可(v1,v2顺序不做要求)(存在多个元素)

列如:db.goods.find({color:{‘$all’:[‘red’,’white’]}})    //只要同时有黑色和绿色就可以查询出来,跟上面的那种语法的区别是没有顺序要求。

限制查询字段

我们刚才的查询,是显示的所有的信息字段,但是呢,实际情况操作中,我们不一定全部都用到,那么可以就需要做一个字段输出查询的一个限制。如果全部取出来的话,对于内存和带宽都一定影响,我们按需去操作就可以了。

db.表.find({条件},{字段:1/0,字段:1/0}

1: 查询此字段

0: 排除此字段

find()方法的第一个参数必须要有,如果没有条件的话,就是{}

接下来我们先查询所有,看都有什么

然后查name字段

查不包括name字段

带条件查

底下是查询年龄在20的字段,name:1是表示显示name字段,id:0是表示不显示该字段

但是,下面这样是不可以的:

规则:要输出就全部输出,要不输出就全部不输出。_id除外,可以随意设置0,1。

设置为全部输出

设置为全部不输出

设置为0的字段都不显示了

一个0一个1报错:要是0都是0,要是1都是1。

我们先查所有数据

$or查询,多个条件,满足其一即可

db.goods.find({'$or':[{price:2000},{num:{'$lte':200}}]})

查询goods表内的价钱在2000或者num小于等于200,满足于其一即可

$in和$nin:

in:在里面

nin:不在里面

先查询所有

属于20,21,22,的数据

db.text.find({age:{'$in':[20,21,22]}})

不属于20,21,22的数据

db.text.find({age:{'$nin':[20,21,22]}})

$all 查询:表示完全匹配

准备的数据如下:

使用$in查询

db.color.find({color:{$in:['pink','green','blue']}})

再使用$all进行查询:

db.color.find({color:{$all:['pink','green','blue']}})

$all命令必须完全匹配

数据查询---限制查询条数

限制出2/3条数据

数据查询--跳过记录行数

下面命令的意思是说:skip(2)是跳过前两行记录,limit(2)显示后面的两条记录。

db.text.find().limit(2).skip(2);

limit()和skip()的位置可以互换。

db.text.find().skip(2).limit(2);

分页怎么写呢????规定的是每页显示2条数据。

PageNow表示现在是在第几页,比如现在是在第3页。

pageSize表示每页显示几条记录。

按公式算:(3-1)* 2  = 4  也就是说第三页的数据是从下标为4的数据开始显示。

现在我想显示第5页的数据:

第一页的数据是:0  1

第二页的数据是:2  3

第三页的数据是:4  5

第四页的数据是:6  7

第五页的数据是:8  9

所以skip()方法里面的参数值的公式:2(n-1)   n表示当前在第几页,2表示每页显示多少条

数据查询---排序

1表示升序:

-1表示降序:

数据查询---统计

数据查询--去重

语法:db.集合名称.distinct(“去重域名称”,{条件})

先查一下数据

修改数据

> db.表.update({条件},{‘$set’:{字段:值,字段:值......}})

> db.表.update({条件},{字段:值,字段:值......})

① 有$set的修改:只修改设置的字段,其他字段不变化

① 没有$set的修改:只修改设置的字段,没有修改的字段就删除了(除了_id字段)

删除记录  语法:db.集合名.remove(query, justOne)

参数说明:query查询表达式是一个json数据(与sql中的where相似)。

如:删除键名为”李世民”的数据:db.test.remove({“name”:“李世民”})

justOne:true/false是否只删除1条,默认为false,就是删除多条数据。

一次删除多条数据,由于默认为false,所以可以省略此参数

一次只删除一条数据:

清空所有的数据:

db.goods.remove({});

删除字段  db.表.update({条件},{‘$unset’:{字段:1/字段:0}})

注意:设置的字段0或是1都是可以进行删除此字段的。

扩展:修改数据

语法:db.集合名.update(条件,数据,[是否新增默认false],[是否修改多条默认false])

参数说明:

参数3:修改的数据不存在则自动添加,默认false,不添加。

参数4:是否修改所有符合条件的数据,默认false,只修改一条。

创建测试数据:

MongoDB这个产品是基于js引擎开发出来的。

修改器的使用

将{“name”:”zs1”}修改为{“name”:”zs2”}

问题:只想修改名字,但是年龄被删除了

解决:使用修改器。

语法:db.集合名.update({条件},{修改器名称:{修改的键:修改的值}})

通过修改器将zs3的年龄修改为33

测试新增(第三个参数的使用)

当我们再修改数据时,如果没有符合条件的,就直接新增加一条数据。

现在是zs33是没有这个条数据的:

不写第三个参数时,默认false,不添加。

测试一次修改多条(第四个参数的使用)

如果一次性有多条数据满足要求,那么第四个参数设为true时,就全部修改了。

把name为zs2的age修改为250

第四个参数:默认false,只修改一条,为true时,修改多条数据。

mongo数据库的一些命令(对于新同学,按照我的步骤连一遍即可)的更多相关文章

  1. GitHub 常用命令使用介绍(新同学入门)

    经济在不断发展,社会在不断进步,以往的互联网在现在看来都可以称为传统互联网了,因为技术不断的在突破和革新. 本文主要介绍一下版本管理工具,我猜测很多人还是用SVN.CVS或者Resion,但是,今天我 ...

  2. 【MongoDB】windows平台搭建Mongo数据库复制集(类似集群)(转)

    原文链接:[MongoDB]windows平台搭建Mongo数据库复制集(类似集群)(一) Replica  Sets(复制集)是在mongodDB1.6版本开始新增的功能,它可以实现故障自动切换和自 ...

  3. 【MongoDB】windows平台搭建Mongo数据库复制集(相似集群)(三)

    关于windows平台搭建Mongo数据库复制集这个话题,我已经在前面写了两篇博客 第一篇: 怎样在windows平台搭建Mongo数据库复制集 第二篇: 数据同步和故障自适应測试 在本篇里面,咱们重 ...

  4. 超详细windows安装mongo数据库、注册为服务并添加环境变量

    1.官网下载zip安装包 官网地址https://www.mongodb.com/download-center/community?jmp=nav,现在windows系统一般都是64位的,选好版本. ...

  5. Oracle数据库导入导出命令总结

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中.利用 ...

  6. Oracle数据库导入导出命令总结 (详询请加qq:2085920154)

    分类: Linux Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的 ...

  7. MongoDB创建数据库和集合命令db.createCollection详解(转)

    切换/创建数据库 use yourDB;  当创建一个集合(table)的时候会自动创建当前数据库 完整的命令如下:db.createCollection(name, {capped: <Boo ...

  8. 将 node.js 的数据保存到 mongo 数据库中

    Mongo 数据库 安装 首先到 Mongo 的官方网站下载安装程序:http://www.mongodb.org/,我下载的文件名为:mongodb-win32-x86_64-2008plus-2. ...

  9. oracle数据库exp/imp命令详解

    转自http://wenku.baidu.com/link?url=uD_egkkh7JtUYJaRV8YM6K8CLBT6gPJS4UlSy5WKhz46D9bnychTPdgJGd7y6UxYtB ...

随机推荐

  1. 前端之CSS(上)

    CSS CSS 简介 ## CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染 ...

  2. matlab-画地形图

    1.画三维图 之前画曲面的三维图,运用z=x2+y2 算出z和Z,如果是给出数据的地形则没办法用公式算,为此,引入插值自动造出地形的坐标. 拟合和插值的区别:插值是必须要过点,曲线可以不光滑:拟合则是 ...

  3. Running Routes Kattis - runningroutes(区间dp)

    Running Routes \[ Time Limit: 12000 ms\quad Memory Limit: 1048576 kB \] 题意 给出一个正 \(n\) 边形,标号顺时针从 \(0 ...

  4. HTTP、HTTP2.0、SPDY、HTTPS 你应该知道的一些事

    参考: https://www.cnblogs.com/wujiaolong/p/5172e1f7e9924644172b64cb2c41fc58.html

  5. [技术博客]ubuntu+nginx+uwsgi+Django+https的部署

    ubuntu+nginx+uwsgi+Django+https部署文档 配置机器介绍 操作系统:Ubuntu 18.04.2 LTS 64位 python版本:Python 3.6.7 Django版 ...

  6. python3.5-ssh免输入密码过程

    ssh远程批量执行命令要输密码很蛋疼,虽然有很多种方式,大概有4.5种.原理基本类似. 这里我就讲一个python的模拟登陆 模块 此刻的时间是:2015年11月19日11:11:47         ...

  7. Docker学习-从无知到有知的学习过程

    Docker学习 最近被别人提到的docker吸引到了注意力,所以打算先快速的了解一下docker到底是个上面东西. 之所以我写下这个文档呢,是为了记录对docker一无所知我是如何进行学习一门新技术 ...

  8. QuantLib 金融计算——基本组件之 Money 类

    目录 QuantLib 金融计算--基本组件之 Money 类 概述 构造函数 成员函数 如果未做特别说明,文中的程序都是 python3 代码. QuantLib 金融计算--基本组件之 Money ...

  9. 读《PMI 分析手册》

    目录 读<PMI 分析手册> 官方 PMI 基本概况 官方制造业 PMI 官方非制造业 PMI 综合 PMI 产出指数 PMI 分析框架 PMI 与经济周期 官方 PMI 分析 参考研报 ...

  10. MySQL查询指定表的字段名称

    1,查询表中所有字段(横排):SELECT GROUP_CONCAT( COLUMN_NAME SEPARATOR "," ) FROM information_schema.CO ...