玩转mongodb(二):mongodb基础知识

常用基本数据类型:

  • null

null用于表示空值或者不存在的字段:

{"data":null}

  • 布尔型

布尔类型只有两个值,true和false:

{"data":true}、{"data":false}

  • 字符串

字符串类型的数据是由UTF-8字符组成:

{"data":"pingan"}

  • 正则表达式

查询时,使用正则表达式作为限定条件,语法和javascript的正则表达式一样:

{"data":/pingan/i}

  • 对象id

对象id是一个12字节(24字符)的ID,是文档的唯一标识。

{"data":ObjectId()}

  • 数值

shell默认使用64位的浮点型数值,即Double类型。对于整型值,可以使用NumberInt类(4字节带符号整数)或NumberLong类(8字节带符号整数)。

{"data":3.33},表示Double类型

{"data":NumberInt("3")},表示Int类型

{"data":NumberLong("3")},表示Long类型

  • 数组

数据列表或者数据集都可以表示为数组。数组的元素可以是数值、字符串等等其他基本数据类型,元素之间用英文逗号分隔开。

{"data":[1,2,3]}、{"data":["a","b","c"]}

  • 日期

日期被存储为自新纪元以来经过的毫秒数,不存储时区:

{"data":new Date()}

  • 内嵌文档

文档可以嵌套其他文档,被嵌套的文档作为父文档的值:

{"data":{"company":"pingan"}}

  • 二进制数据

二进制数据是一个任意字节的字符串,要将非UTF-8字符保存到数据库中,二进制数据是唯一的方式。比如保存图片的数据。但是不能直接在shell中使用。

 1 //把图片存到mongodb中
 2 public void SaveImgMG(byte[] byteImg)
 3 {
 4     Document doc = new Document();
 5     doc["ID"] = 1;
 6     doc["Img"] = byteImg;
 7     mongoCollection.Save(doc);
 8 }
 9 //获取mongodb存储的图片字节数据
10 public byte[] GetImgMG()
11 {
12   Document doc=  mongoCollection.FindOne(new Document { { "ID", 1 } });
13   return doc["Img"] as Binary;
14 }

文档:

文档就是键值对的一个有序集,是MongoDB中数据的基本单元,非常类似于关系型数据库管理系统中的行,但更具表现力。

1 var mydoc = {
2                _id: ObjectId("5099803df3f4948bd2f98391"),
3                name: { first: "Alan", last: "Turing" },
4                birth: new Date(‘Jun 23, 1912‘),
5                death: new Date(‘Jun 07, 1954‘),
6                contribs: [ "Turing machine", "Turing test", "Turingery" ],
7                views : NumberLong(1250000)
8             }

集合:

集合就是一组文档,如果将MongoDB中的一个文档比喻为关系型数据库中的一行,那么一个集合就相当于一张表的概念。

数据库:

在MongoDB中,多个文档组成集合,而多个集合可以组成数据库,一个MongoDB实例,可以承载多个数据库,每个数据库拥有0个或者多个集合。MongoDB3.0这个版本中,有三个数据库名是保留的。分别是:admin、local、config。

admin:从身份验证的角度来讲,这是“root”数据库。如果将一个新建的一个用户添加到admin数据库,这个用户就自动获得所有数据库的权限。

local:这个数据库永远都不可以复制,且一台服务器上的所有本地集合都可以存储在这数据库中。

config:MongoDB用于分片设置时,分片信息会存储在config数据库中。

shell中的基本操作:

shell会用到4个基本的操作:创建、读取、更新和删除(即CRUD操作)。

创建:

1 db.person.insert({"name":"ryan","age":26});
2 db.person.find({"name":"ryan"});

更新:使用update修改人员信息。update接受(至少)两个参数,第一个是限定条件(用于匹配待更新的文档),第二个是新的文档。

1 db.person.update({"name":"ryan"},{"name":"ryan","age":27});
2 db.person.find({"name":"ryan"});

删除:使用remove方法可将文档从数据库中永久删除。如果没有使用任何参数,它会将集合内的所有文档全部删除(甚用!!)。它可以接受一个作为限定条件的文档作为参数。

1 db.person.remove({"name":"ryan"});
2 db.person.find({"name":"ryan"});

时间: 2024-10-12 12:00:39

玩转mongodb(二):mongodb基础知识的相关文章

基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用

在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各个方面来总结并记录一下这个新型.看似神秘的数据库使用过程.本文是这个系列的开篇,主要介绍一些MongoDB数据库的基础知识.安装过程.基础使用等方面. MongoDB是一款由C++编写的高性能.开源.无模式的常用非关系型数据库产品,是非关系数据库当中功能最丰富.最像关系数据库的数据库.它扩展了关系型

oracle学习入门系列之二 数据库基础知识

oracle学习入门系列之二 数据库基础知识 本篇蛤蟆要梳理下那些被淡忘的数据库基础知识,也许根本就没被人记住过.不管是哪种情况,该记住的必须记住,记不住就把他记下来吧. 首先问几个问题如下: 数据库基础知识是什么? 好吧,蛤蟆直接吐后而不亡,看目录开始吧. 本人邮箱:[email protected] 微信公众号:HopToad 欢迎各界交流 1      基本概念 概念就是概念,大伙对这些名词不要死磕,但是对定义一定要理解,理解方能领悟,领悟方能运用自如后创新. 1.1      数据 数据

VBS学习日记(二) 基础知识

VBScript 基础知识 一.变量 1.全部单引號后面的内容都被解释为凝视.(在vbsedit中ctrl+m凝视,反凝视ctrl+shift+m) 2.在 VBScript 中,变量的命名规则遵循标准的命名规则,须要注意的是:在 VBScript 中对变量.方法.函数和对象的引用是不区分大写和小写的.在申明变量时,要显式地申明一个变量,须要使用keyword DIm 来告诉 VBScript 你要创建一个变量,并将变量名称跟在其后.申明多个同类型变量,能够用逗号分隔.注意:VBScript 中

MongoDB简介及基础知识

MongoDB简介 一.MongDB是一个高性能,开源,无模式的文档型NosQL数据库.主要功能特性: 1.文件存储格式BSON(一种json的扩展) 2.模式自由,数据格式不受限了表的结构 3.支持动态查询 4.支持完全索引 5.支持复制(其主从复制)和故障恢复 6.使用高效的二进制数据存储,包括大型对象 7.自动处理碎片,以支持云计算层次的扩展. 8.支持Java.Ruby.Python.C++.PHP等多种语言 9.内部支持Javascript 二.MongoDB的优势 1.查询速度快 2

Python学习系列(二)(基础知识)

Python基础语法 Python学习系列(一)(基础入门) 对于任何一门语言的学习,学语法是最枯燥无味的,但又不得不学,基础概念较繁琐,本文将不多涉及概念解释,用例子进行相关解析,适当与C语言对比,避免陷入语法的苦海.我认为初学者学习语法的目标是学会使用即可,关于对概念的深入理解,剖析,没有一定的知识积累是很难做到的. 学习Python,基本语法不是特别难,有了C的基本知识,理解比较容易.本文的主要内容是Python基础语法,学完后,能熟练使用就好.(开发环境依然是Python2.7,简单使用

[Java面试二]Java基础知识精华部分.

一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: Java的三种技术架构: JAVAEE:Java Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发: JAVASE:Java Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础: JAVA

Solr学习之二-Solr基础知识

一 基本说明 简单来说Solr是基于Lucene的高性能的,开源的Java企业搜索服务器.Solr可以看作一个Web app,运行在tomcat或Jetty这类HTTP服务器上, 底层是一个基于Lucene的搜索引擎,还附加一个Solr的基本管理界面.Solr提供HTTP服务,通过Get方法进行查询,通过Post方法进行索引的添加/删除管理. 一般来说Solr的查询时通过Get方法请求到HTTP服务器的solr这个app下的/select对应的servlet上去,而添加等操作时通过POST方法到

MongoDB (二) MongoDB 优点

任何关系型数据库,具有典型的架构设计,显示表和这些表之间的关系.虽然在 MongoDB中,没有什么关系的概念. MongoDB比RDBMS的优势 架构:MongoDB是文档型数据库,其中一个集合保存不同的不同的文件.字段的数量,内容和该文件的大小可以是不同于从一个文件复制到另一个. 一个单一的对象是结构清晰 没有复杂的连接 深查询能力. MongoDB支持动态查询使用基于文档的查询语言,如SQL几乎一样强大的文件 调优 易于规模化:MongoDB是易于扩展 不需要数据库对象的应用程序对象转换/映

framework7学习笔记二:基础知识

一:DOM7 framework7有自己的 DOM7 - 一个集成了大部分常用DOM操作的高性能库.它的用法和jQuery几乎是一样的,包括大部分常用的方法和jquery风格的链式调用. 在开发时,为了避免命名冲突以及方便开发,我们把dom7定义为一个变量: var $$ = Dom7; 之后,就可以在页面中使用 $$ 了. DOM7可以调用的方法,请查阅官方文档:http://docs.framework7.cn/Index/dom.html 二:

Python3分布式爬虫(scrap+redis)基础知识和实战详解

背景 随着业务需求的变化,大规模爬虫遇到各种问题.python爬虫具有先天优势,社区资源比较齐全,各种框架也完美支持.爬虫性能也得到极大提升.本次分享从基础知识入手,涉及python 的两大爬虫框架pyspider.scrapy,并基于scrapy.scrapy-redis 做了分布式爬虫的介绍(直接粘贴的ppt截图)会涉及 redis.mongodb等相关知识. 一.前沿 1.1 爬虫是什么? 网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本.