1、数据可基本操作

1. 创建数据库

use  databaseName

选择一个数据库,如果数据库不存在就自动创建一个数据库

只有向数据库中插入数据时,数据库才会被真实创建出来,而当数据库中没有数据时,use不会马上创建数据库,

这个特点有效减少了存储空间的占用。

2. 查看数据库

show dbs

mongodb中默认有以下几个数据库:

admin  存放用户和权限

local   存放本地化数据(分布式部署)

config  存储分片信息

3. 删除数据库

db.dropDatabase()

注意:mongodb中函数都用小驼峰命名

4. 创建集合

db.createCollection(collection_name)

5. 查看集合

show collections 或者 show tables

注意集合的命名规则:

1) 合法的utf-8字符串

2) 不能有’\0’

3) 不能以system开头,因为是系统的保留前缀

4)不能和关键字重复

6. 删除集合

db.collection_name.drop()

7. 集合重命名

db.collection_name.renameCollection(‘new_name’)

8. 获取集合对象

db.getCollection(‘collection_name’)

等价于db.collection

 2、集合中增添数据

1. insert方法插入数据

语法:

db.collection_name.insert({数据内容})

当向一个集合中插入数据的时候,如果这个集合不存在则自动创建

最近插入的数据文档在数据库的最上方显示

插入的数据域默认是字符串,如果在插入字段中不用双引号,数据库后台就会自动加上

同时插入多条文档

db.collection_name.insert([{ }, { }, { }])

2. save方法插入文档

db.collection_name.save()

save与insert的区别

如果加_id域,如果这个_id域的值已经存在,则会替换原有的文档,而insert是不允许插入相同

的_id的

3、集合中删除数据

MongoDB删除数据的命令比较简单,也没有太多的变化

语法:

db.collection.remove(query ,justOne)

参数:

query与下文查询操作的query相同,justone表示只是删除匹配到的多条文档中的第一条文档

4、集合查询操作

1. 查询文档(重点)

语法:

db.collection_name.find(query,field)

相当于 mysql中的 select *

query 筛选条件,相当于MySQL的where子句

field  选择要展示的域

返回值: 返回查找到的文档

需要理解的点:

query 和 field都是可选参数,不写参数就默认显示所有文档,也只有查找时不用传入query,一般其他操作都需要传入query进行筛选

query  以键值对的形式给出查找条件

field   以键值对的形式给出要展示或者不展示的 域为键,值时0时不显示该域, 值是1时显示该域,这是mongodb特有的特性

例如:为了避免看到一大串的id值,在查找时_id 域经常会被设置为0

db.class.find( {},{_id :0} )  除了_id 域,其他域都正常显示

注意:

1. 在写第二个参数时必须要写第一个参数

2. 第二个参数只能同时限制多个域的0/1值,不能多个域都设置不同,否则其他没设置的域会混乱,_id域的设置除外(即无论_id域怎么设

置都不影响其他域的设置)

query的使用

因为键值对无法进行像MySQL中where子句那样强大的筛选作用(键值对筛选相当于MySQL中where子句筛选的等于条件),mongodb引入了操作符操作符的表达形式是以键值对形式出现的。下面介绍几种常用的操作符,更多的操作符可以查看Mongodb的官方文档。

1)比较操作符

$eq  等于操作符

例如:db.class.find( {age: {$eq : 18} },{_id :0} )

更多操作符:

$gt   大于操作符

$lt   大于操作符

$ lte  小于等于操作符

$gte  大于等于操作符

$ne   不等于操作符

细节:mongodb中多种类型的数据都是可以比较的,例如数值类型,字符串类型

2)范围操作符

$ in [ ]   在范围集合内的文档被匹配 (连续的范围)

例如:db.class.find( {age: {$in : [18, 23]} },{_id :0} )

如果是用 $ and只能这样表达: $and:[{age:{$gt:.. } }, {age:{$lt:.. } } ]

用gt和lt一起用来把范围括起来

$ nin[ ]  不在范围集合内的文档被匹配

3)逻辑操作符

1. $ and: [ ]   和运算符

query 中如果多个条件用逗号隔开,就为and关系(类似mysql中的where子句中的and)

例如:db.class.find( {$and: [{age: {$ gt 17}, {age: {$ lt 22} ],{_id :0} )  查询年龄大于17,小于22的同学

用$ and 可以改写为 db.class.find({$ and : [{ age: 17} ,{sex: ‘M’ } ] },{_id :0} )

[ ]内一定要分成连个字典来表示两个条件,否则(只用一个字典来包含两个条件并用逗号分隔)在语法上就只表示一个条件,只不过这个条件里面包含两个条件而已

一般平常使用多直接用逗号来分隔条件而不用 $and的操作符

2 .$ or  或运算符

语法表达上跟 $ and 一样,表达的是或逻辑筛选

1. $not  取反运算符

db.class.find( {age: {$not {$ gt 17} } },{_id :0} )  匹配年龄小于等于17的文档

注意: $not 一般添加在条件值的前面,对值进行取反

2. $ nor  既不也不运算符

not(A or B) --> not A and not B

db.class.find({$ nor : [{ age: 17} ,{sex: ‘M’ } ] },{_id :0} )

注意:如果筛选匹配的文档的域是其他文档不具备的;即一个域有些文档有值,有些文档没值,这种筛选是无法匹配的

2. 查询操作的另一条语法

findOne(query,field)

查找符合条件的第一条文档

参数跟find一样

5、集合更新操作 

1. 修改文档内容操作

语法:

db.collection.update(query,update,upsert,multi)

与mysql不同,mongodb所有修改操作都用update,包括对集合的域值的修改和集合结构的修改

参数:query     筛选要修改的文档,相当于where

update    将筛选的文档修改为什么内容,相当于set,需要配合修改操作符一起使用

upsert     布尔值,默认为false,如果query文档不存在则不进行修改  ,如果为true,在文档不存在条件下,则根据query和update插入新文档

multi       布尔值,默认为false如果query筛选的为多条,则只修改第一条,如果设置为true,则修改所有符合条件文档

注意:

upset 一般为用默认值false,因为如果原本没匹配的文档,很有可能是程序员自己输错了某些内容

修改操作符:

$ set

如果没有该文档,需要插入的时候是根据查询条件和设置条件作为域来插入的

如果需要修改的值为多个,就像插入数据一样,将不同域的值用一个{ }包起来,例如:

db.class.update({name:'小张'},{$set:{age:16,sex:'m'}},true)

MongoDB基础总结的更多相关文章

  1. mongodb基础用法

    安装部分 mongodb配置方法 mongodb的安装目录 C:\MongoDB\Server\3.2\bin 创建以下目录 c:\mongo\log c:\mongo\db 创建mongodb的配置 ...

  2. mongodb基础系列——数据库查询数据返回前台JSP(一)

    经过一段时间停顿,终于提笔来重新整理mongodb基础系列博客了. 同时也很抱歉,由于各种原因,没有及时整理出,今天做了一个demo,来演示,mongodb数据库查询的数据在JSP显示问题. 做了一个 ...

  3. MongoDB基础知识 02

    MongoDB基础知识 02 6 数据类型 6.1 null : 表示空值或者不存在的字段 {"x":null} 6.2 布尔型 : 布尔类型只有两个值true和false {&q ...

  4. MongoDB基础知识 01

    MongoDB基础知识  1. 文档  文档是MongoDB中的数据的基本单元,类似于关系型数据库管理系统的行. 文档是键值对的一个有序集.通常包含一个或者多个键值对. 例如: {”greeting& ...

  5. MongoDB基础教程系列--未完待续

    最近对 MongoDB 产生兴趣,在网上找的大部分都是 2.X 版本,由于 2.X 与 3.X 差别还是很大的,所以自己参考官网,写了本系列.MongoDB 的知识还是很多的,本系列会持续更新,本文作 ...

  6. DataBase MongoDB基础知识记录

    MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...

  7. MongoDB 基础(2019年开篇)

    MongoDB基础知识: 1.什么是MongoDB NoSQL(NoSQL=Not Only SQL),意即"不仅仅是SQL". MongoDB是一个介于关系数据库和非关系数据库之 ...

  8. MongoDB基础学习

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  9. windows下mongodb基础玩法系列二CURD附加一

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  10. windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

随机推荐

  1. 2020-05-21:es底层读写原理?倒排索引原理?

    福哥答案2020-05-21: es不熟悉,答案仅供参考:es写数据过程1.客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)2.coordinatin ...

  2. 2020-04-22:谈谈JDK1.8下的HashMap在并发情况下链表成环的过程。(挖)

    福哥答案2020-04-22: jdk1.8下的hashmap采用的是尾插法,不会有链表成环的问题.jdk1.7下采用的头插***有链表成环的问题. hashmap成环原因的代码出现在transfer ...

  3. Centos搭建go环境以及go入门

    引言 本文主要聚焦于 如何在centos上搭建go环境以及go入门, 包括搭建go环境,hello world运行, 创建包等操作,初步入门go语言. 安装环境 在管理员权限下, 也就是root用户 ...

  4. Spring——IOC(控制反转)与DI(依赖注入)

    IOC与DI的理解及使用 控制反转IOC(Inversion of Control)是一种设计思想,DI(依赖注入)是实现IOC的一种方法.在没有IOC的程序中,我们使用面向对象编程,对象的创建于对象 ...

  5. Java多线程_缓存对齐

    1.什么是缓存对齐 当前的电脑中,数据存储在磁盘上,可以断电保存,但是读取效率较低.不断电的情况下,数据可以在内存中存储,相对硬盘效率差不多是磁盘的一万倍左右.但是运算时,速度最快的是直接缓存在CPU ...

  6. Go 编译器内部知识:向 Go 添加新语句-第 2 部分

    这是探讨 Go 编译器两篇文章的最后一篇.在第 1 部分中,我们通过构建自定义的编译器,向 Go 语言添加了一条新语句.为此,我们按照此图介绍了编译器的前五个阶段: 在"rewrite AS ...

  7. app_error_weak.c, 108, Mesh assert at 0x0002EFFE (:0)

    在调试light_switch_server_nrf52840_xxAA_s140_7.0.1的时候出现<t:      10664>, app_error_weak.c,  108, M ...

  8. 获取元素top值,屏幕滚动到当前元素

    var top = $(this).offset().top; $('html , body').animate({scrollTop: top-100},10);

  9. Java动态代理(三)——Cglib动态代理

    一.Cglib动态代理Cglib是一个优秀的动态代理框架,它的底层使用ASM在内存中动态的生成被代理类的子类,使用Cglib即使代理类没有实现任何接口也可以实现动态代理功能.而且,它的运行速度要远远快 ...

  10. 【干货!!】三句话搞懂 Redis 缓存穿透、击穿、雪崩

    前言 如何有效的理解并且区分 Reids 穿透.击穿和雪崩之间的区别,一直以来都挺困扰我的.特别是穿透和击穿,过一段时间就稀里糊涂的分不清了. 为了有效的帮助笔者自己,以及拥有同样烦恼的朋友们区分这三 ...