MongoDB Shell和Robo3T使用以及与SQL语法比较

From:MongoDB Shell 了解使用 - 大葱哥 - 博客园

MongoDB基本管理命令:MongoDB基本管理命令_千与的专栏-CSDN博客_mongo查询命令

MongoDB常用操作命令大全:MongoDB常用操作命令大全_piaocoder-CSDN博客_mongodb常用命令

mongodb 命令行基本命令使用大全:mongodb 命令行基本命令使用大全_请叫我大师兄-CSDN博客

MongoDB日常运维操作命令小结:MongoDB日常运维操作命令小结 - 散尽浮华 - 博客园

mongodb的命令行(增删改查、高级查询):mongodb的命令行操作命令详解(增删改查、高级查询)_凌云之陟-CSDN博客_mongodb操作命令

菜鸟教程 之 MongoDB 教程:MongoDB 教程 | 菜鸟教程

MongoDB 中文手册MongoDB 中文手册

配置环境变量

WIN10系统:右键单击 "此电脑" ---> 属性 ---> 高级系统设置 ---> 高级 ---> 环境变量,添加C:\Program Files\MongoDB\Server\3.0\bin; 如果不配置环境变量,则需到 C:\Program Files\MongoDB\Server\3.0\bin 目录,执行 mongo.exe文件。

下图直接 cmd,命令mongo,表示连接成功。

Shell 的一些操作

命名规范

  • 不能是空字符串("")。
  • 不得含有 ' '(空格)、.、$、/、\和\0 (空字符)。
  • 应全部小写。
  • 最多64字节。
  • 一些系统关键字。

1、创建一个数据库

执行下面命令。example:数据库名(如果只创建数据库,而不做处理,这个空数据库会被删除。)命令:use example

2、查看所有数据库 

验证上面的创建的数据,下面不存在。命令:show dbs

3、给指定数据库添加集合并添加记录

 user:集合名    insert:插入一条记录

> db.user.insert({name:'yujie'})
> WriteResult({ "nInserted" : 1 }) --表示成功

再 show dbs 查看,数据库创建成功。

添加 字段

data = dict(field_1=value_1,field_2=value_2,field_3=value1_3,
)
db_tb.update_one({"_id": ObjectId("5b345e03651a790cd872b633")}, {"$set": data})

更新字

db.products.update({_id: 100},{ $set:{quantity: 500,details: {model: "14Q3", make: "xyz"},tags: ["coats", "outerwear", "clothing"]}   }
)

python 示例:

user_name = 'king'
db_tb.update_one({"_id": ObjectId("5b345e03651a7")}, {"$set": {'name': user_name}})

4、查看所有文档

命令:show collections

5、查看 user文档 中的所有记录

> db.user.find()
{ "_id" : ObjectId("598c05e503bd136ff3ea0257"), "name" : "xiaoming" }

查看记录数量:> db.user.find().count()

6、查看 user文档 中的第一条记录

> db.user.findOne()
{ "_id" : ObjectId("598c05e503bd136ff3ea0257"), "name" : "xiaoming" }

7、更新文档数据 

Mongodb 数据更新命令(update、save):Mongodb数据更新命令(update、save) - 天外飞仙丶 - 博客园

update({查询条件}, {更新内容})

> db.user.update({name:'xiaoming'},{$set:{name:'小明'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.user.find()
{ "_id" : ObjectId("598c05e503bd136ff3ea0257"), "name" : "小明" }

6、删除文档数据 

remove({条件})

> db.user.insert({name:'zhangsan'}) --先插入一条
WriteResult({ "nInserted" : 1 })> db.user.find() --再查询
{ "_id" : ObjectId("598c05e503bd136ff3ea0257"), "name" : "小明" }
{ "_id" : ObjectId("598c0b0603bd136ff3ea0258"), "name" : "zhangsan" }> db.user.remove({name:'zhangsan'}) --再删除
WriteResult({ "nRemoved" : 1 })> db.user.find() --再查询
{ "_id" : ObjectId("598c05e503bd136ff3ea0257"), "name" : "小明" }

7、删除数据库 

db.dropDatabase()

> use delectdb --创建数据库
switched to db delectdb> db.dropDatabase() --删除数据库
{ "ok" : 1 }

8、帮助 

db.help() -- db.数据库名.help()

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 testgroup 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':{$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'

模糊查询:$regex

db.test.find({"name":{$regex:"aaa"}})

分组个数过滤

db.getCollection('id_mapper').aggregate([{$group:{ _id :"$contract_id",count:{$sum:1}}},{$match:{count:{$gt:1}}}])

判断是否为空

db.getCollection('id_mapper').find({"sinocardid":{$in:[null]}})

Mongodb 高级查询 --- 多级路径查询

db.getCollection('cinema_portrait').find({"_id":'10100'}, {'portrait.data.124.90天一级品类':1})

{
    "_id" : "10100",
    "portrait" : {
        "data" : {
            "124" : {
                "90天一级品类" : {
                    "食品饮料、酒类、生鲜" : 1.12,
                    "手机、数码" : 0.95,
                    "家用电器" : 0.94,
                    "家具、家具、家装、厨具" : 0.77,
                    "电脑、办公" : 0.57,
                    "母婴、玩具乐器" : 0.57,
                    "服饰内衣、珠宝首饰" : 0.43,
                    "鞋靴、箱包、钟表、奢侈品" : 0.4,
                    "营养保健" : 0.38
                }
            }
        }
    }
}

mongodb 与 mysql 命令对比

来源:MongoDB命令及SQL语法对比_数据人生-CSDN博客

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。

MySQL

MongoDB

说明

mysqld

mongod

服务器守护进程

mysql

mongo

客户端工具

mysqldump

mongodump

逻辑备份工具

mysql

mongorestore

逻辑恢复工具

db.repairDatabase()

修复数据库

mysqldump

mongoexport

数据导出工具

source

mongoimport

数据导入工具

grant * privileges on *.* to …

Db.addUser()

Db.auth()

新建用户并权限

show databases

show dbs

显示库列表

Show tables

Show collections

显示表列表

Show slave status

Rs.status

查询主从状态

Create table users(a int, b int)

db.createCollection("mycoll", {capped:true,

size:100000}) 另:可隐式创建表。

创建表

Create INDEX idxname ON users(name)

db.users.ensureIndex({name:1})

创建索引

Create INDEX idxname ON users(name,ts DESC)

db.users.ensureIndex({name:1,ts:-1})

创建索引

Insert into users values(1, 1)

db.users.insert({a:1, b:1})

插入记录

Select a, b from users

db.users.find({},{a:1, b:1})

查询表

Select * from users

db.users.find()

查询表

Select * from users where age=33

db.users.find({age:33})

条件查询

Select a, b from users where age=33

db.users.find({age:33},{a:1, b:1})

条件查询

select * from users where age<33

db.users.find({'age':{$lt:33}})

条件查询

select * from users where age>33 and age<=40

db.users.find({'age':{$gt:33,$lte:40}})

条件查询

select * from users where a=1 and b='q'

db.users.find({a:1,b:'q'})

条件查询

select * from users where a=1 or b=2

db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )

条件查询

select * from users limit 1

db.users.findOne()

条件查询

select * from users where name like "%Joe%"

db.users.find({name:/Joe/})

模糊查询

select * from users where name like "Joe%"

db.users.find({name:/^Joe/})

模糊查询

select count(1) from users

Db.users.count()

获取表记录数

select count(1) from users where age>30

db.users.find({age: {'$gt': 30}}).count()

获取表记录数

select DISTINCT last_name from users

db.users.distinct('last_name')

去掉重复值

select * from users ORDER BY name

db.users.find().sort({name:-1})

排序

select * from users ORDER BY name DESC

db.users.find().sort({name:-1})

排序

EXPLAIN select * from users where z=3

db.users.find({z:3}).explain()

获取存储路径

update users set a=1 where b='q'

db.users.update({b:'q'}, {$set:{a:1}}, false, true)

更新记录

update users set a=a+2 where b='q'

db.users.update({b:'q'}, {$inc:{a:2}}, false, true)

更新记录

delete from users where z="abc"

db.users.remove({z:'abc'})

删除记录

db. users.remove()

删除所有的记录

drop database IF EXISTS test;

use test

db.dropDatabase()

删除数据库

drop table IF EXISTS test;

db.mytable.drop()

删除表/collection

db.addUser(‘test’, ’test’)

添加用户

readOnly-->false

db.addUser(‘test’, ’test’, true)

添加用户

readOnly-->true

db.addUser("test","test222")

更改密码

db.system.users.remove({user:"test"})

或者db.removeUser('test')

删除用户

mongodb 语法

MongoDB 的好处挺多的,比如多列索引,查询时可以用一些统计函数,支持多条件查询,但是目前多表查询是不支持的,可以想办法通过数据冗余来解决多表查询的问题。

Mongo DB对数据的操作很丰富,下面做一些举例说明,内容大部分来自官方文档,另外有部分为自己理解。

查询 colls 所有数据
db.colls.find()                               //select * from colls通过指定条件查询
db.colls.find({'last_name': 'Smith'});        //select * from colls where last_name='Smith'指定多条件查询
db.colls.find( { x : 3, y : "foo" } );        //select * from colls where x=3 and y='foo'指定条件范围查询
db.colls.find({j: {$ne: 3}, k: {$gt: 10} });  //select * from colls where j!=3 and k>10查询不包括某内容
db.colls.find({}, {a:0});  //查询除a为0外的所有数据支持 <, <=, >, >= 查询,需用符号替代分别为 $lt,$lte,$gt,$gte
db.colls.find({ "field" : { $gt: value } } ); 
db.colls.find({ "field" : { $lt: value } } ); 
db.colls.find({ "field" : { $gte: value } } );
db.colls.find({ "field" : { $lte: value } } );也可对某一字段做范围查询
db.colls.find({ "field" : { $gt: value1, $lt: value2 } } );不等于查询用字符$ne
db.colls.find( { x : { $ne : 3 } } );in查询用字符$in
db.colls.find( { "field" : { $in : array } } );
db.colls.find({j:{$in: [2,4,6]}});not in查询用字符$nin
db.colls.find({j:{$nin: [2,4,6]}});取模查询用字符$mod
db.colls.find( { a : { $mod : [ 10 , 1 ] } } )  // where a % 10 == 1$all查询
db.colls.find( { a: { $all: [ 2, 3 ] } } );  //指定a满足数组中任意值时$size查询
db.colls.find( { a : { $size: 1 } } ); //对对象的数量查询,此查询查询a的子对象数目为1的记录$exists查询
db.colls.find( { a : { $exists : true } } );  // 存在a对象的数据
db.colls.find( { a : { $exists : false } } ); // 不存在a对象的数据$type查询 $type值为 bsonhttp://bsonspec.org/ 数据的类型值
db.colls.find( { a : { $type : 2 } } );  // 匹配a为string类型数据
db.colls.find( { a : { $type : 16 } } ); // 匹配a为int类型数据使用正则表达式匹配
db.colls.find( { name : /acme.*corp/i } ); //类似于SQL中like内嵌对象查询
db.colls.find( { "author.name" : "joe" } );1.3.3版本及更高版本包含$not查询
db.colls.find( { name : { $not : /acme.*corp/i } } );
db.colls.find( { a : { $not : { $mod : [ 10 , 1 ] } } } );sort()排序
db.colls.find().sort( { ts : -1 } ); //1为升序2为降序limit()对限制查询数据返回个数
db.colls.find().limit(10)skip()跳过某些数据
db.colls.find().skip(10)snapshot()快照保证没有重复数据返回或对象丢失count()统计查询对象个数
db.students.find({'address.state' : 'CA'}).count();  //效率较高
db.students.find({'address.state' : 'CA'}).toArray().length;  //效率很低group()对查询结果分组和SQL中group by函数类似
distinct()返回不重复值

MongoDB GUI( Robo 3T) Shell使用及操作

From:MongoDB GUI( Robo 3T) Shell使用及操作 - 大葱哥 - 博客园

Robo 3T 下载及使用

之前叫 Robomongo,后面被收购了,改名 Robo 3T 。

下载链接:Robo 3T | Free, open-source MongoDB GUI (formerly Robomongo)

安装步骤省略,下一步下一步...

图形界面,连接默认,取个名字就行。

连接成功,可以愉快的使用了,不用总是敲命令了,简洁方便,多种显示。

软件右边可以切换显示样式,慢慢折腾。

Robo 3T Shell 操作

右键数据库打开Shell

下面玩一下没用的语法,绿色按钮为运行命令。

1、批量插入(默认是不支批量操作,只能用for循环。)

2、$type 操作符,基于BSON类型来检索集合中匹配的数据类型,并返回结果。

先增加一些数据,然后查询出来 (同一界面,需要选中执行的一行,不然会一直执行第一个命令。)

3、Limit与Skip的用法

查询文档中两条记录

  • 第一个 {} 放 where 条件,为空表示返回集合中所有文档。
  • 第二个 {} 指定那些列显示和不显示 (0表示不显示 1表示显示)。

查询显示第2、3条文档数据

  • skip()方法默认参数为 0 。
  • skip 和 limit 结合就能实现分页。

排序 sort() 方法

索引 ensureIndex() 方法

  • 多个字段索引:db.student.ensureIndex({"name":1,"hobby":-1})

聚合 aggregate()

这里只操作一种方法,分组并统计,其它的可以查看相关用法和文档。

总结:常用的一些基本用法就这些,高级用法可以慢慢再研究。说实话这个工具挺实用的,还有些智能提示,不用天天对着一个黑框,哈哈。接下开始实战。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2018全球100个最有价值的科技品牌 18个中国品牌上榜

来源&#xff1a;全球企业动态英国品牌评估机构Brand Finance发布“2018全球100个最有价值的科技品牌榜”(Top 100 most valuable tech brands 2018)&#xff0c;前五位都是美国品牌。美国上榜品牌总价值9590亿美元&#xff0c;占百强品牌总价值14673亿美元的65%。亚马逊跃升至…

Alpine Linux 使用简介

From&#xff1a;https://www.aliyun.com/jiaocheng/137717.html Alpine Linux、CoreOS、RancherOS、Red Hat 原子项目、 VMware光子操作系统比较https://blog.csdn.net/hxpjava1/article/details/78482987 Alpine Linux配置使用技巧&#xff1a;https://www.aliyun.com/jiao…

实例学习SSIS(五)--理论介绍SSIS

导读&#xff1a; 实例学习SSIS&#xff08;一&#xff09;--制作一个简单的ETL包 实例学习SSIS&#xff08;二&#xff09;--使用迭代 实例学习SSIS&#xff08;三&#xff09;--使用包配置 实例学习SSIS&#xff08;四&#xff09;--使用日志记录和错误流重定向 实例学习SSIS…

MIT教授Tomaso Poggio演讲与专访:智能背后的科学与工程 | 腾讯AI Lab学术论坛

来源&#xff1a;腾讯AI实验室腾讯AI Lab第二届学术论坛在深圳举行&#xff0c;聚焦人工智能在医疗、游戏、多媒体内容、人机交互等四大领域的跨界研究与应用。全球30位顶级AI专家出席&#xff0c;对多项前沿研究成果进行了深入探讨与交流。腾讯AI Lab还宣布了2018三大核心战略…

linux捕捉信号sigint失败,为shell布置陷阱:trap捕捉信号方法论

本文目录&#xff1a;1.1 信号说明1.2 trap布置陷阱1.3 布置完美陷阱必备知识家里有老鼠&#xff0c;快消灭它&#xff01;哎&#xff0c;又给跑了。老鼠这小东西跑那么快&#xff0c;想直接直接消灭它还真不那么容易。于是&#xff0c;老鼠药、老鼠夹子或老鼠笼就派上用场了&a…

Trade Stages - The Trade Path

Gieno Trade Stages - The Trade Path STARTS OFF “greed orientated.”Loses because:1 Market problemsNot a zero sum game, a “very negative” sum gameMarket psychology – doing the wrong thing at the wrong timeThe majority is always wrongMarket exists on ch…

win10、oneplus7pro 使用 Kali

1、Windows 10 使用 Kali Linux子系统 微软为 Windows Subsystem for Linux (WSL) 带来了著名的 Kali Linux &#xff0c;无虚拟机&#xff0c;无Docker实现Windows 和 Kali Linux 交互。 window 开启 wsl 功能&#xff1a; 1.打开控制面板&#xff08; winR&#xff0c;输入…

干货|十大产业方向深度解析!《2020科技产业趋势报告》

来源&#xff1a;机器人大讲堂报告下载&#xff1a;https://pan.baidu.com/s/1BKf2rINXx0CVLhgokfYrgQ未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能&#xff0c;互联网和脑科学交叉研究机构。未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评…

交互式数据包处理程序 Scapy 用法

From&#xff1a;https://www.cnblogs.com/hongxueyong/p/5641475.html Scapy 用法官方文档&#xff1a;http://scapy.readthedocs.io/en/latest/#starting-scapyAbout ScapyScapy is a Python program that enables the user to send, sniff and dissect and forge network pa…

展望2021年:智能机器人可监督工业机器人干活,效率提升30%

来源&#xff1a;极客网会帮我们吸地板、在公共场所担任导引员或是拆除炸弹的机器人呢可能感觉比较有趣&#xff0c;但那些负责组装汽车以及在工厂生产在线帮忙拾取物品的机器人&#xff0c;在整体价值上要高得多&#xff0c;而且也有越来越多的工/商业或消费性应用产品是由这种…

ASP。NET的设计思想

自从有了html与http&#xff0c;就有了浏览器与Web服务器&#xff0c;并有了Web应用&#xff0c;最初的交互模式是这样的&#xff1a; 该模式很好地运行了很多年。然而&#xff0c;随着计算机应用的发展&#xff0c;人们越来越不满足于只有静态内容的页面&#xff0c;而由某种机…

Kali linux 渗透测试技术之搭建WordPress Turnkey Linux及检测WordPress 应用程序漏洞

From&#xff1a;https://bbs.ichunqiu.com/thread-15716-1-1.html 怎样用 WPScan&#xff0c;Nmap 和 Nikto 扫描和检查一个 WordPress 站点的安全性&#xff1a;https://www.cnblogs.com/chayidiansec/p/7989274.html 为了收集用于测试的应用程序&#xff0c; Turnkey Linux…

AI芯片格局分布

来源&#xff1a;中国科学院自动化研究所 作者&#xff1a; 吴军宁如果说2016年3月份AlphaGo与李世石的那场人机大战只在科技界和围棋界产生较大影响的话&#xff0c;那么2017年5月其与排名第一的世界围棋冠军柯洁的对战则将人工智能技术推向了公众视野。阿尔法狗&#xff08;…

科学互驳:大脑细胞活到老,长到老?

来源&#xff1a;中国生物技术网 作者&#xff1a;格格科学家发现&#xff0c;人脑中与学习、记忆和情感相关的区域在成年后依然会持续产生新的神经元。这与过去的理论恰恰相反&#xff0c;即青春期之后大脑停止产生新的神经元。这项发现有助于我们开发治疗神经系统疾病的新方…

AI综述专栏 | 朱松纯教授浅谈人工智能:现状、任务、构架与统一

作者&#xff1a;朱松纯来源&#xff1a;人工智能前沿讲习班导读本文作者&#xff1a;朱松纯&#xff0c;加州大学洛杉矶分校UCLA统计学和计算机科学教授&#xff0c;视觉、认知、学习与自主机器人中心主任。文章前四节浅显探讨什么是人工智能和当前所处的历史时期&#xff0c;…

联想linux笔记本评测,联想(lenovo)G460AL-ITH Linux笔记本电脑接口评测-ZOL中关村在线...

模具和外观的“革新”让我们见识到不一样的联想G460&#xff0c;而在整机的接口扩展能力方面依旧主打实用性。机身左侧从左至右依次是安全锁孔、散热孔、RJ-45以太网接口、VGA视频输出接口、USB2.0接口、e-SATA接口(兼容USB2.0)、Express Card卡槽和HDMI高清视频输出接口。与前…

联合国召开会议讨论“杀手机器人”问题

来源&#xff1a;中国科学报 作者&#xff1a;赵熙熙来自29个国家的57位科学家日前呼吁联合抵制一所韩国大学&#xff0c;因为设立在该校的一个新的中心旨在利用人工智能强化国家安全。人工智能科学家表示&#xff0c;该大学正在开发自主武器&#xff0c;又称“杀手机器人”&a…

【转】近期Coolite控件的技术点总结

1。Coolite下如何自定义控件样式表Code1<style type"text/css"> 2 .x-grid3-td-fullName .x-grid3-cell-inner {}{ 3 font-family:tahoma, verdana; 4 display:block; 5 font-weight:normal; 6 font-style…

Anaconda 完全入门指南

From&#xff1a;https://www.jianshu.com/p/eaee1fadc1e9 Anaconda官网&#xff1a;https://www.anaconda.com/ Anaconda 官网 文档&#xff1a;http://docs.anaconda.com/anaconda/user-guide Anaconda介绍、安装及使用教程&#xff1a;https://zhuanlan.zhihu.com/p/32925…

linux资源使用统计指南,指南:工作量分析文档

指南&#xff1a;工作量分析文档工作量分析文档工作量分析文档用于在不同的性能测试中确定要使用的变量并定义变量值&#xff0c;利用这些性能测试可以模拟主角特征、最终用户业务功能(用例)、负载和容量。主题软件质量要从不同的维度来进行评估&#xff0c;其中包括可靠性、功…