常用基本数据类型:

  • 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中使用。

 //把图片存到mongodb中
public void SaveImgMG(byte[] byteImg)
{
Document doc = new Document();
doc["ID"] = 1;
doc["Img"] = byteImg;
mongoCollection.Save(doc);
}
//获取mongodb存储的图片字节数据
public byte[] GetImgMG()
{
Document doc= mongoCollection.FindOne(new Document { { "ID", 1 } });
return doc["Img"] as Binary;
}

文档:

文档就是键值对的一个有序集,是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"});

  喜欢请微信扫描下面二维码,关注我公众号--“精修Java”,做一些实战项目中的问题和解决方案分享。

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

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

    在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各 ...

  2. ERP-非财务人员的财务培训教(一.二)------财务基础知识

    二.基本财务管理知识 第一节 财务管理基础知识(一) 财务与会计的关系 会计的基础知识 (一) 财务与会计的关系 财务与会计的内涵 1.会计 会计工作主要是解决三个环节的问题: 会计凭证 会计账簿 会 ...

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

    VBScript 基础知识 一.变量 1.全部单引號后面的内容都被解释为凝视.(在vbsedit中ctrl+m凝视,反凝视ctrl+shift+m) 2.在 VBScript 中,变量的命名规则遵循标 ...

  4. [Windows驱动开发](二)基础知识——数据结构

    本节主要介绍驱动开发的一些基础知识. 1. 驱动程序的基本组成 1.1. 最经常见到的数据结构 a. DRIVER_OBJECT驱动对象 // WDK中对驱动对象的定义 // 每个驱动程序都会有一个唯 ...

  5. Java 8实战之读书笔记二:基础知识

    好记性不如烂笔头,整理一些个人觉得比较重要的东西. 一.基础知识 第1章 为什么要关心Java 8 Java 8提供了一个新的API(称为"流", Stream),它支持许多处理数 ...

  6. MongoDB简介及基础知识

    MongoDB简介 一.MongDB是一个高性能,开源,无模式的文档型NosQL数据库.主要功能特性: 1.文件存储格式BSON(一种json的扩展) 2.模式自由,数据格式不受限了表的结构 3.支持 ...

  7. mongodb学习02基础知识

    文档 键值对的一个有序集 文档被表示为对象 文档必须有一个 _id 键 {"greeting" : "Hello, world!"}` 键 文档的键是字符串 区 ...

  8. mongodb 学习笔记--- 基础知识

    1.mongodb的安装 (1) mac使用brew 安装就好 brew install mongodb (2) mkdir /data/db 作为mongodb默认的数据目录 并 sudo chow ...

  9. 分布式数据库对比评测(Es,mongodb,redis)基础知识篇

    前言 我建议大家看下这个,否则后面你不知道我在说什么. 1.ES数据库相关概念 啥是Es,说白了就是支持文档搜索的分布式数据库,专门方便搜索的,GITHUB京东现在都在用. 1.ES的数据库存放在哪里 ...

  10. [权威指南]学习笔记——第1、2章 MongoDB介绍和基础知识

    安装目录:C:\Program Files\MongoDB\Server\3.2 Bin:..\..\Program Files\MongoDB\Server\3.2\bin 启动命令:mongod ...

随机推荐

  1. Java程序性能定位工具-火焰图

    Java程序性能定位工具-火焰图 前言 Java火焰图是一种新的查看CPU利用率方式.今天就带大家一起使用来自Google大神的工具来生成火焰图.火焰图非常的直观,问题一目了然,希望有一天它能成为JA ...

  2. Simple Package Tool 学习

    Simple Package Tool 学习   1.getattr内置函数 getattr(object, name[, default]) python Packages.py install - ...

  3. vs 2015 结合新配置的IIS 发布网站过程中遇到的问题及解决办法?

    1.由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添加处理程序 错误: HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添 ...

  4. [ASP.NET]大文件无法上传排查经验分享

    最近我们标桥下载模块,在经过正常更新后,发现软件包无法上传. 临时解决方案 因为问题结点在于文件无法上传到服务器,所以我们临时手动将文件丢到服务器,通过测试服务器将数据造出来,然后再更新到正式数据库, ...

  5. MongoDB的下载、安装与部署方法

    1.什么是MongoDB? 它是介于关系型数据库和非关系型数据库之间的一种NoSQL数据库,用C++编写,是一款集敏捷性.可伸缩性.扩展性于一身的高性能的面向文档的通用数据库. 2.为什么要用Mong ...

  6. 【cocos2d-x 手游研发----界面UI设计】

    简单探讨一下如何在cocos2d-x的游戏引擎里面去制作各做交互UI界面,常见的UI如下: 人物头像,血条值,经验条,技能按钮,以及各种玩家交互的界面按钮:背包,人物属性,门派,等: 类似上面的图示交 ...

  7. Python 获取秒级时间戳与毫秒级时间戳

    原文:Python获取秒级时间戳与毫秒级时间戳 1.获取秒级时间戳与毫秒级时间戳 import time import datetime t = time.time() print (t) #原始时间 ...

  8. python web开发——c5 图片上传 flask-uploads 云储存sdk

    坑1:上传图片时,py文件中@app.route('/upload/',methods = {'post','get'})中upload后如有斜杠,则postman中发送post时的网址中也要为upl ...

  9. CentOS 6 - 升级内核

    有的时候,需要升级Linux内核,今天我就是在CentOS 6中升级内核,在没有升级内核之前,我的CentOS 6只有2.6.32这一个内核,也是默认启动的内核.下面就开始一步步操作升级内核了! 一, ...

  10. A - Subsequence (算法 二分 )

    点击打开链接 A sequence of N positive integers (10 < N < 100 000), each of them less than or equal 1 ...