MongoDB常用命令
选择和创建数据库
选择和创建数据库的语法格式:
use 数据库名称
如果数据库存在则选择该数据库,如果数据库不存在则自动创建。以下语句创建commentdb数据库:
use commentdb > use foobar switched to db foobar
查看数据库:
show dbs
查看当前使用的数据库
> db test
查看集合,需要先选择数据库之后,才能查看该数据库的集合:
show collections
插入文档
选择数据库后,使用集合来对文档进行操作,插入文档语法格式:
db.集合名称.insert(数据); > post={"title":"领悟书生","content":"这是一个分享教程的网站","date":new Date()} { "title" : "领悟书生", "content" : "这是一个分享教程的网站", "date" : ISODate("2016-06-06T09:38:08.995Z") } > db.blog.insert(post) WriteResult({ "nInserted" : 1 })
查询文档
查询集合的语法格式:
db.集合名称.find() db.集合名称.findOne()
查询一条记录
> db.blog.findOne() { "_id" : ObjectId("5755448bfceaa7879cd4d48f"), "title" : "领悟书生", "content" : "这是一个分享教程的网站", "date" : ISODate("2016-06-06T09:38:08.995Z") }
查找所有记录
> db.blog.find() { "_id" : ObjectId("5755448bfceaa7879cd4d48f"), "title" : "领悟书生", "content" : "这是一个分享教程的网站", "date" : ISODate("2016-06-06T09:38:08.995Z") } >
发现文档会有一个叫_id的字段,这个相当于我们原来关系数据库中表的主键,当你在插入文档记录时没有指定该字段,MongoDB会自动创建,其类型是ObjectID类型。如果我们在插入文档记录时指定该字段也可以,其类型可以是ObjectID类型,也可以是MongoDB支持的任意类型。
根据条件查找,在json参数中传入对应的条件即可,如:
db.blog.find({userid:'1013'})
返回指定条数的记录,可以在find方法后调用limit来返回结果,例如:
db.blog.find().limit(2)
修改文档
修改文档的语法结构:
db.集合名称.update(条件,修改后的数据)
update至少要有两个参数,一个是查询条件,第二个是新的文档对象
> db.blog.update({title:"领悟书生"},post) WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) > db.blog.find() { "_id" : ObjectId("5755448bfceaa7879cd4d48f"), "title" : "领悟书生", "content" : "这是一个分享教程的网站", "date" : ISODate("2016-06-06T09:38:08.995Z"), "comments" : [ ] } >
执行后发现,这条文档未更新的其它字段都不见了。
为了解决这个问题,我们需要使用修改器$set来实现,命令如下:
db.blog.update({title:"领悟书生"},{$set:{title:"领悟书生123"}})
删除文档
删除文档的语法结构:
db.集合名称.remove(条件)
以下语句可以将数据全部删除,慎用~
db.blog.remove({})
删除条件可以放到大括号中,例如删除title为领悟书生的数据,输入以下语句:
> db.blog.remove({title:"领悟书生"}) WriteResult({ "nRemoved" : 1 }) > db.blog.find() >
统计条数
统计记录条件使用count()方法。以下语句统计spit集合的记录数:
db.comment.count()
按条件统计 ,例如统计userid为1013的记录条数:
db.comment.count({userid:"1013"})
模糊查询
MongoDB的模糊查询是通过正则表达式的方式实现的。格式为:
/模糊查询字符串/
查询评论内容包含“流量”的所有文档,代码如下:
db.comment.find({content:/流量/})
查询评论内容中以“加班”开头的,代码如下:
db.comment.find({content:/^加班/})
大于 小于 不等于
<, <=, >, >= 这个操作符也是很常用的,格式如下:
db.集合名称.find({ "field" : { $gt: value }}) // 大于: field > value
db.集合名称.find({ "field" : { $lt: value }}) // 小于: field < value
db.集合名称.find({ "field" : { $gte: value }}) // 大于等于: field >= value
db.集合名称.find({ "field" : { $lte: value }}) // 小于等于: field <= value
db.集合名称.find({ "field" : { $ne: value }}) // 不等于: field != value
查询评论点赞数大于1000的记录:
db.comment.find({thumbup:{$gt:1000}})
包含与不包含
包含使用$in操作符
查询评论集合中userid字段包含1013和1014的文档:
db.comment.find({userid:{$in:["1013","1014"]}})
不包含使用$nin操作符
查询评论集合中userid字段不包含1013和1014的文档:
db.comment.find({userid:{$nin:["1013","1014"]}})
条件连接
我们如果需要查询同时满足两个以上条件,需要使用$and操作符将条件进行关联(相当于SQL的and)。格式为:
$and:[ {条件},{条件},{条件} ]
查询评论集合中thumbup大于等于1000 并且小于2000的文档:
db.comment.find({$and:[ {thumbup:{$gte:1000}} ,{thumbup:{$lt:2000} }]})
如果两个以上条件之间是或者的关系,我们使用操作符进行关联,与前面and的使用方式相同,格式为:
$or:[ {条件},{条件},{条件} ]
查询评论集合中userid为1013,或者点赞数小于2000的文档记录:
db.comment.find({$or:[ {userid:"1013"} ,{thumbup:{$lt:2000} }]})
列值增长
对某列值在原有值的基础上进行增加或减少,可以使用$inc运算符:
db.comment.update({_id:"2"},{$inc:{thumbup:1}})
相关知识点
知识点
软件工具
相关教程
更多常用命令详细讲解_深入浅出MongoDB(四)
创建数据库,集合,列出所有/当前的数据库,定义新的数据库连接,增加文档,删除文档,更新文档、查询文档、根据条件表达式查询
Linux常用命令(整理)
1.查看linux版本 #cat /etc/issue CentOS release 5.5 (Final) Kernel \r on an \m 2.查看内核版本命令 #cat /proc/version Linux version 2.6.18-238.el5 (mockbuild@x86-012.build.bos.redhat.com) (gcc version 4.1.2 2
Storm常用命令
1、提交Topologies 命令格式:storm jar 【jar路径】 【拓扑包名.拓扑类名】【stormIP地址】【storm端口】【拓扑名称】【参数】 eg: storm jar /home/storm/storm-starter.jar storm.starter.WordCountTopology wordcountTop; storm jar /home/storm/storm-st
twitter storm常用命令
1、提交Topologies 命令格式:storm jar 【jar路径】 【拓扑包名.拓扑类名】【stormIP地址】【storm端口】【拓扑名称】【参数】 eg: storm jar /home/storm/storm-starter.jar storm.starter.WordCountTopology wordcountTop; storm jar /home/storm/storm-st
Docker常用命令
HDFS基本文件常用命令
为了每次执行Hadoop的时候,不必须要前者加上hadoop的安装的绝对路径,要做的事情就是将其安装路径加入到PATH中,这样就可以直接执行hadoop命令。 如下: vim /etc/profile中加入一句 export HADOOP_INSTALL=/usr/local/hadoop1.1.2 注意这里要写HADOOP_INSTALL,因为如果写HADOOP_HOME会在执行命令的时候提醒该
Git 常用命令 - 不断更新中
一、git clone git clone 支持本地和远程repository,其格式如下: 本地克隆: git clone /path/to/repo.git/ git clone file:///path/to/repo.git/ 如:1). git clonegit@github.scm.corp.ebay.com:swang6/test.git
Hadoop 用命令行编译URLCat
Hadoop 用命令行编译URLCat import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import org.apache.hadoop.fs.FsUrlStreamHandlerFactory; import or
使用命令行编译Kotlin程序
MySQL常用操作命令汇总
一、打开连接 命令格式:mysql -h-u -p 参数说明: 服务器地址; 用户名; 密码 示例:mysql -h192.168.1.1 -uroot -p123 二、增加用户 命令格式:grant select on 数据库.*
Hadoop 创建用户及HDFS权限,HDFS操作等常用Shell命令
sudo addgroup Hadoop#添加一个hadoop组 sudo usermod -a -G hadoop larry#将当前用户加入到hadoop组 sudo gedit etc/sudoers#将hadoop组加入到sudoer 在root ALL=(ALL) ALL后 hadoop ALL=(ALL) ALL 修改hadoop目录的权限 sudo chown -R larry:ha
solr mongoDB 对比
1 solr 字段是写死的 2 solr优势是大块文本模糊查询,mongoDB还支持正则查询以及类似js语法代码语句查询 3 mongoDB已经原生支持了局部更新,以及有个upsert,solr先查有就更新,没有就直接覆盖的 4 mongDB支持批量更新 4 mongDB工具较多,实时监控mongodstat,支持热备份、热恢复mongodump和mongorestore,还提供锁命令控制以及角色
传智播客maven视频教程
maven依赖管理,maven常用命令,maven生命周期,maven依赖作用范围,maven传递依赖冲突解决
MongoDB学习(三):MongoDB Shell的使用
MongoDB自带简洁但功能强大的JavaScript shell。JavaScript shell键入一个变量会将变量的值转换为字符串打印到控制台上。打开命令提示(cmd.exe)。进入到MongoDB解压的目录的bin目录下,即D:\NoSQL\mongodb-win32-x86_64-2.4.3\bin;然后执行mongo.exe(或者mongo)启动MongoDB shell。
最新教程
更多java线程状态详解(6种)
java线程类为:java.lang.Thread,其实现java.lang.Runnable接口。 线程在运行过程中有6种状态,分别如下: NEW:初始状态,线程被构建,但是还没有调用start()方法 RUNNABLE:运行状态,Java线程将操作系统中的就绪和运行两种状态统称为“运行状态” BLOCK:阻塞状态,表示线程阻塞
redis从库只读设置-redis集群管理
默认情况下redis数据库充当slave角色时是只读的不能进行写操作,如果写入,会提示以下错误:READONLY You can't write against a read only slave. 127.0.0.1:6382> set k3 111 (error) READONLY You can't write against a read only slave. 如果你要开启从库
Netty环境配置
netty是一个java事件驱动的网络通信框架,也就是一个jar包,只要在项目里引用即可。
Netty基于流的传输处理
在TCP/IP的基于流的传输中,接收的数据被存储到套接字接收缓冲器中。不幸的是,基于流的传输的缓冲器不是分组的队列,而是字节的队列。 这意味着,即使将两个消息作为两个独立的数据包发送,操作系统也不会将它们视为两个消息,而只是一组字节(有点悲剧)。 因此,不能保证读的是您在远程定入的行数据
Netty入门实例-使用POJO代替ByteBuf
使用TIME协议的客户端和服务器示例,让它们使用POJO来代替原来的ByteBuf。
Netty入门实例-时间服务器
Netty中服务器和客户端之间最大的和唯一的区别是使用了不同的Bootstrap和Channel实现
Netty入门实例-编写服务器端程序
channelRead()处理程序方法实现如下
Netty开发环境配置
最新版本的Netty 4.x和JDK 1.6及更高版本
电商平台数据库设计
电商平台数据库表设计:商品分类表、商品信息表、品牌表、商品属性表、商品属性扩展表、规格表、规格扩展表
HttpClient 上传文件
我们使用MultipartEntityBuilder创建一个HttpEntity。 当创建构建器时,添加一个二进制体 - 包含将要上传的文件以及一个文本正文。 接下来,使用RequestBuilder创建一个HTTP请求,并分配先前创建的HttpEntity。
快速了解MongoDB【基本概念与体系结构】
什么是MongoDB MongoDB is a general purpose, document-based, distributed database built for modern application developers and for the cloud era. MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
windows系统安装MongoDB
安装 下载MongoDB的安装包:mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi,按照提示步骤安装即可。 安装完成后,软件会安装在C:\Program Files\MongoDB 目录中 我们要启动的服务程序就是C:\Program Files\MongoDB\Server\3.2\bin目录下的mongod.exe,为了方便我们每次启动,我
Spring boot整合MyBatis-Plus 之二:增删改查
基于上一篇springboot整合MyBatis-Plus之后,实现简单的增删改查 创建实体类 添加表注解TableName和主键注解TableId import com.baomidou.mybatisplus.annotations.TableId; import com.baomidou.mybatisplus.annotations.TableName; import com.baom
分布式ID生成器【snowflake雪花算法】
基于snowflake雪花算法分布式ID生成器 snowflake雪花算法分布式ID生成器几大特点: 41bit的时间戳可以支持该算法使用到2082年 10bit的工作机器id可以支持1024台机器 序列号支持1毫秒产生4096个自增序列id 整体上按照时间自增排序 整个分布式系统内不会产生ID碰撞 每秒能够产生26万ID左右 Twitter的 Snowflake分布式ID生成器的JAVA实现方案
Spring boot整合mybatis plus
快速了解mybatis plus 是对Mybatis框架的二次封装和扩展 纯正血统:完全继承原生 Mybatis 的所有特性 最少依赖:仅仅依赖Mybatis以及Mybatis-Spring 性能损耗小:启动即会自动注入基本CURD ,性能无损耗,直接面向对象操作 自动热加载:Mapper对应的xml可以热加载,大大减少重启Web服务器时间,提升开发效率 性能分析:自带Sql性能分析插件,开发测试