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}})


2019-03-12 22:13

相关知识点

知识点

软件工具

相关教程

更多

常用命令详细讲解_深入浅出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。

最新教程

更多

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性能分析插件,开发测试

Docker 容器创建并运行MySQL

下载MySQL镜像:docker pull centos/mysql‐57‐centos7(docker默认从国外的镜像网站拉取镜像,速度很慢。可以使用国内的阿里云镜像加速站点提升镜像拉取速度)。运行容器:docker run -di --name=mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-57-centos7,docker run 命令具体使用方法可以使用 docker run --help 查看