文档章节

mongodb命令指南

Dragon_
 Dragon_
发布于 2015/04/24 15:19
字数 1405
阅读 4
收藏 0
点赞 0
评论 0

欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45166827


一.什么是MongoDB

    简单的说,MongoDB是一种数据库,像我们常用的mysql,sqlserver,orcale.但是跟这些数据库不同的是,他们都是关系型数据库,而MongoDB是非关系型数据库(NoSql)。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发。Mongo的官方网站地址是:http://www.mongodb.org/,读者可以在此获得更详细的信息。

MongoDB有三个基本的术语,数据库,集合,文档。数据库大家都知道是什么。那么集合是什么,集合就相当于mysql的表;文档就相当于表中的某一列。

这么说就很清楚了吧。

首先说说数据库和集合的指令:

1.查看所有的数据库:

show dbs

2.使用某一个数据库

use mydb

3.查看这个数据库中所有的集合:

show collections


二.查询:MongoDB find


db.collection.find(query, fields)
query 可选. 使用查询操作符指定查询条件
fields 可选. 指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)


1).查询集合中的所有文档。


//将返回集合中所有文档
db.collection.find()
//或者
db.collection.find({})


第一个参数若为键/值对时,查询过程中就意味着执行了条件筛选(query),下面查询操作将返回collection集合中age键值为18的文档集合。


db.collection.find({"age":18})
//也可以多个条件查询,逗号隔开就好了
db.collection.find({"age":18,"sex":"man"})


我们可以通过find 的第二个参数来指定返回的键。


若find不指定第二个参数,查询操作默认返回查询文档中所有键值。mongo中也可以指定返回的键,这样我们就可以避免查询无用键值查询所消耗的资源、会节省传输的数据量和内存消耗。


db.users.find({}, {"age":1})
注意看 {"age":1},并不是指age=1,因为它在第二个参数(fields),指的是,查找文档中所有的age,当然,也可以多个值。




如果数据时双层的。例如:
"user":{
"name":"mm",
"age":10
}


无论是 query还是fields都是支持的。比如你需要查询 age = 10的所有玩家。
db.collection.find({"user.age":18})


查询条件不只是相等,也可以用其他比较操作。
比如,我们使用下面的比较操作符"$gt","$gte","$lt","$lte","$ne"(分别对应">"、 ">=" 、"<" 、"<=","!="),组合起来进行范围的查找。
如 查询 年龄 大于20小于30岁的玩家
db.collection.find({"age":{"$gt":20,"lt":30}})


$in


查找key在values列表的的文档。


db.collection.find({"age":{"$in":[10,20]}})


mongodb是很灵活的,以上所有的查询,都可以随意组合,也可以用于update,开动你的想象力吧,只要满足mongodb语法。






三.更新:MongoDB update
mongodb update用了更新文档。


db.collection.update( criteria, objNew, upsert, multi )


query  : update的查询条件,类似sql update查询内where后面的
fields   : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert   : 这个参数的意思是,如果文档中不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi    : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。



upsert和multi很简单就不解释了。下面知悉讲讲query和fields:


1)$set
用法:{ $set : { field : value } }
就是相当于sql的set field = value,全部数据类型都支持$set。


db.collection_name.update( { "id" : 1 } , { $set : { "name" : "mm"} } )
set是设置key为name的value为"mm"


2) $inc
用法:{ $inc : { field : value } }

意思对一个数字字段field增加value,例:


db.collection_name.update({ "id" : 1 } , { $set : { "number" : 1} } )
如上,如果没有name或者number但是需要添加(甚至没有这个"id"=1的doc),需要把upsert置为true.


3) $unset
用法:{ $unset : { field : 1} }


顾名思义,就是删除字段了。例:
> db.collection_name.update({ "id" : 1 } , { $unset : { "name":1 } } )
就是把doc的name字段给删除了。

没看出field : 1里面的1是干什么用的。


数组操作:


4) $push


用法:{ $push : { field : value } }


把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去。例:


> db.collection_name.update( { "id" : 1 } , { $push : { "phone": "123" } } );
其中 phone是一个list,把123加进去。注:即使phone里面有123,还是会加进去,如果需要不重复,需要用到$addToSet.


5)  $addToSet


用法:{ $addToSet : { field : value } }


增加一个值到数组内,而且只有当这个值不在数组内才增加。例:
> db.collection_name.update({ "id" : 1 }  , { $addToSet : { "phone": {$each : ["222","333"] } } } );


phone后面可以是"123",也可以添加多个值,{"$each":["222","333"]},如果存在这个值,那就忽略掉。




6) $pushAll

用法:{ $pushAll : { field : value_array } }


同$push,只是一次可以追加多个值到一个数组字段内。例:


> db.collection_name.update( { "id" : 1 } , { $pushAll : { "phone": ["444","555"] } } );


7) $pop


删除数组内的一个值


用法:
删除最后一个值:{ $pop : { field : 1 } }
删除第一个值:{ $pop : { field : -1 } }


注意,只能删除一个值,也就是说只能用1或-1,而不能用2或-2来删除两条。


8) $pull


用法:$pull : { field : value } }


从数组field内删除一个等于value值。例:


> db.collections.update( { "_d" : 1 } , { $pull : { "phone": "111" } } );


9) $pullAll


用法:{ $pullAll : { field : value_array } }


同$pull,可以一次删除数组内的多个值。例:


> db.collections.update( { "id" : 1 } , { $pullAll : { "phone": [ "222" , "333" ] } } )




本文转载自:http://blog.csdn.net/majianfei1023/article/details/45166827

共有 人打赏支持
Dragon_
粉丝 1
博文 16
码字总数 0
作品 0
闵行
程序员
Docker MongoDB 部署

MongoDB 是一款较为常用的NOSQL 数据库,结合 Docker 使用,能实现轻松配置部署、迁移,本文以下为简要介绍如何在 Docker 中部署并使用 MongoDB。下文主要分为几个部分,内容如下: MongoDB ...

speculatecat ⋅ 04/06 ⋅ 0

CentOS7.X安装mongodb-3.4.2

安装mongodb 下载安装mongodb3.4.x 加入环境变量 创建数据目录 修改配置文件 启动关闭mongodb 开机启动mongodb Mongodb集群(cluster) 修改mongodb.conf 启动mongodb 初始化mongodb,启动副本集...

qq2233466866 ⋅ 06/11 ⋅ 0

大数据分析挖掘学习方向?数据分析师的就业前景怎么样?

加米谷数据分析挖掘课程明细,从理论到云端实操环境到项目实战,手把手教您从0掌握数据分析与挖掘技术,带您走进数据时代。 第一阶段(python基础) python入门:1、Python版本特性介绍2、P...

加米谷大数据 ⋅ 04/17 ⋅ 0

如何在Ubuntu 18.04 LTS上安装和配置MongoDB

如何在Ubuntu 18.04 LTS上安装和配置MongoDB IMCN 18分钟前暂无评论 阅读 9 次 MongoDB是一款非关系型数据库,提供高性能,高可用性和自动扩展企业数据库。 MongoDB是一个非关系型数据库,因...

IMCN ⋅ 05/05 ⋅ 0

Mac和Ubuntu18.04下MongoDB的安装

Mac安装mongodb 使用安装 从默认的配置文件启动mongodb 安装完成后,MongoDB服务启动、停止、重启命令如下: Mac下的mongodb可视化管理工具,推荐使用开源免费的, 下载地址:https://robomon...

翌日千里 ⋅ 05/26 ⋅ 0

在 EMR 中使用 Mongo-Hadoop

在 EMR 中使用 Mongo-Hadoop Mongo-Hadoop 是 MongoDB 推出的用于 Hadoop 系列组件连接 MongoDB 的组件。其原理跟我们上一篇文章介绍的 ES-Hadoop 类似。EMR 中已经集成了 Mongo-Hadoop,用户...

xy_xind ⋅ 前天 ⋅ 0

mongodb的命令行操作命令详解(增删改查、高级查询)

mongodb的命令行操作命令详解(增删改查、高级查询) 本文为上文的续篇,主要讲解mongodb在cmd的直接操作命令,我的mongodb是安装在d:mongodb下 1,mongodb启动服务 : 2,mongodb停止服务 : ...

xiaocao13140 ⋅ 06/04 ⋅ 0

mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、等等)

最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网:https://www.mongodb.com/ MongoDB 是一个基于分布式文件存储的...

Airship ⋅ 06/01 ⋅ 0

MongoDB 3.0新特性概述

MongoDB 在 2015年3月3日 跳过了 MongoDB 2.8版本,直接在 MongoDB 2.6版本后,发布了MongoDB 3.0版本。 随后在 2015年3月17日 发布了 MongoDB 3.0.1 版本; 在 2015年4月9日发布了 MongoDB ...

xinsir999 ⋅ 05/02 ⋅ 0

Node后台|数据库的安装及使用(简版)

MAC 安装mongoDB 启动 mongoDB 判断mongoDB是否已经开启 关闭 mongoDB的服务 mongodb启动成功后会显示 然后我们去看看node如何连接mongodb node 连接mongoDB需要用到 mongoose 如果连接成功的...

贝一平 ⋅ 05/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CENTOS7防火墙命令记录

安装Firewall命令: yum install firewalld firewalld-config Firewall开启常见端口命令: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-po......

cavion ⋅ 25分钟前 ⋅ 0

【C++】【STL】利用chromo来测量程序运行时间与日志时间打印精确到微秒

直接上代码吧,没啥好说的。头疼。 #include <iostream>#include <string>#include <ctime>#include <sstream>#include <iomanip>#include <thread>#include <chrono>using ......

muqiusangyang ⋅ 28分钟前 ⋅ 0

Mac环境下svn的使用

在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简...

故久呵呵 ⋅ 38分钟前 ⋅ 0

破解公司回应苹果“USB限制模式”:已攻破

本周四,苹果发表声明称 iOS 中加入了一项名为“USB 限制模式”的功能,可以防止 iPhone 在连接其他设备的时候被破解,并且强调这一功能并不是针对 FBI 等执法部门,为的是保护用户数据安全。...

六库科技 ⋅ 39分钟前 ⋅ 0

MyBtais整合Spring Boot整合,TypeHandler对枚举类(enum)处理

概要 问题描述 我想用枚举类来表示用户当前状态,枚举类由 code 和 msg 组成,但我只想把 code 保存到数据库,查询处理,能知道用户当前状态,这应该怎么做呢?在 Spring 整合MyBatis 的时候...

Wenyi_Feng ⋅ 58分钟前 ⋅ 0

synchronized与Lock的区别

# <center>王梦龙的读书笔记第一篇</center> ## <center>-synchronized与Lock的区别</centre> ###一、从使用场景来说 + synchronized 是能够注释代码块、类、方法但是它的加锁是和解锁使用一......

我不想加班 ⋅ 今天 ⋅ 0

VConsole的使用

手机端控制台打印输出,方便bug的排查。 首先需要引入vconsole.min.js 文件,然后在文件中创造实例。就能直接使用了。 var vConsole = new VConsole(); vConsole的文件地址...

大美琴 ⋅ 今天 ⋅ 0

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 今天 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 今天 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部