MongoDB基础知识(二)

一、基本概念

1:文档(document)是MongoDB中数据的基本单元,非常类似于关系型数据库管理系统中的行

2:集合(collection)可以看做是一个拥有动态模式(dynamic schema)的表

3:MongoDB的一个实例可以拥有多个相互独立的数据库,每一个数据库拥有自己的集合

4:每一个文档都有一个特殊的键"_id",这个键在文档所属的集合中是唯一的。

5:MongoDB自带JavaScript shell,可用于管理MongoDB的实例或数据操作

可以看两张图,比较好理解,这是从 http://www.runoob.com/ 这里看到的

二、shell基本操作

四种基本操作:创建、读取、更新、删除,就是平常说的增删改查

1):创建    insert函数可将一个文档添加到集合中,如:

    > show dbs;
    admin 0.000GB
    local 0.000GB
    > use testdb;
    switched to db testdb
    > post={"title":"My Blog Post",
    ... "content":"HaHa",
    ... "date":new Date()}
    {
    "title" : "My Blog Post",
    "content" : "HaHa",
    "date" : ISODate("2017-07-07T03:20:44.698Z")
    }
    > db.blog.insert(post)
    WriteResult({ "nInserted" : 1 })
    > db.blog.find()
    { "_id" : ObjectId("595efe1af713ea7372854b9c"), "title" : "My Blog Post", "content" : "HaHa", "date" : ISODate("2017-07-07T03:20:44.698Z") }

2)读取: find和findOne方法用于查询集合里的文档,若只想看一个文档,可以用findOne,上面例子的查询

find查询的时候最多显示20个匹配的文档

    > db.blog.findOne()
    {
    "_id" : ObjectId("595efe1af713ea7372854b9c"),
    "title" : "My Blog Post",
    "content" : "HaHa",
    "date" : ISODate("2017-07-07T03:20:44.698Z")
    } 

3)更新: 使用update修改,update接受至少两个参数,第一个是限定条件(用于匹配待更新的文档),第二个是新的文档。假设,在刚刚的基础上,添加评论功能,使用数组存储

    > post.comments=[]
    [ ]
    > db.blog.update({"_id":ObjectId("595efe1af713ea7372854b9c")},post)
    WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
    > db.blog.findOne()
    {
    "_id" : ObjectId("595efe1af713ea7372854b9c"),
    "title" : "My Blog Post",
    "content" : "HaHa",
    "date" : ISODate("2017-07-07T03:20:44.698Z"),
    "comments" : [ ]
    }

可以通过查询看到,已经添加了comments键

4)删除: 使用remove方法可将文档从数据库中永久的删除,如果没有使用参数匹配,那么则会删除集合内的所有文档。它可以接受一个作为限定条件的文档作为参数

    > db.blog.remove({"_id":ObjectId("595efe1af713ea7372854b9c")})
    WriteResult({ "nRemoved" : 1 })
    > db.blog.findOne()
    null

可以看到,集合内没有文档了

三:数据类型

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

布尔型:布尔型有两个值true和false      {"x":true}

数值:

shell默认使用64位浮点型数值       {"x":3.14}   or   {"x":3}

对于整型值,可使用NumberInt类(表示4字节带符号整数)      {"x":NumberInt("3")}

NumberLong类(表示8字节带符号整数)   {"x":NumberLong("3")}

字符串:UTF-8字符串都可以表示为字符串类型的数据           {"x":"foobar"}

日期:日期被存储为自新世纪元以来经过的毫秒数,不存储时区   {"x":new Date}

正则表达式:查询时,使用正则表达式作为限定条件              {"x":/foobar/i}

数组:数据列表或数据集可以表示为数组         {"x":["a","b","c","d"]}

内嵌文档:文档可嵌套其他文档           {"x":{"foo":"bar"}}

对象id:对象id是一个12字节的ID,是文档的唯一标识

MongoDB shell的技巧:

在连接进入mongo后,可以使用help来帮助查看

    > help
    db.help() help on db methods
    db.mycoll.help() help on collection methods
    sh.help() sharding helpers
    rs.help() replica set helpers
    help admin administrative help
    help connect connecting to a db help
    help keys key shortcuts
    help misc misc things to know
    help mr mapreduce
    show dbs show database names
    show collections show collections in current database
    show users show users in current database
    show profile show most recent system.profile entries with time >= 1ms
    show logs show the accessible logger names
    show log [name] prints out the last segment of log in memory, ‘global‘ is default
    use <db_name> set current database
    db.foo.find() list objects in collection foo
    db.foo.find( { a : 1 } ) list objects in foo where a == 1
    it result of the last line evaluated; use to further iterate
    DBQuery.shellBatchSize = x set default number of items to display on shell
    exit quit the mongo shell

查看一个函数的源代码,可以直接使用,如:db.test.update 就会把update函数给显示出来

时间: 2024-10-10 05:58:46

MongoDB基础知识(二)的相关文章

MongoDB基础知识

一.基本操作 1)创建 > post={"title":"MyBlog Post", "content":"Here's my blog post.", "date":new Date()} > db.blog.insert(post) 2)查看 > db.blog.find()或者 db.blog.findOne() 3)更新 > post.comments = [] > d

MongoDB基础知识 01

MongoDB基础知识  1. 文档  文档是MongoDB中的数据的基本单元,类似于关系型数据库管理系统的行. 文档是键值对的一个有序集.通常包含一个或者多个键值对. 例如: {”greeting" : "Hello, world!", "foo", 3} 2. 集合(collection) 集合就是一组文档,类似关系型数据库中的一张表. 3. 数据库(database) 多个文档组成集合,多个集合组成数据库.一个MongoDB实例可以承载多个数据库.

ASP.NET Core 2.2 基础知识(二) 中间件

原文:ASP.NET Core 2.2 基础知识(二) 中间件 中间件是一种装配到应用管道以处理请求和相应的软件.每个软件都可以: 1.选择是否将请求传递到管道中的下一个组件; 2.可在调用管道中的下一个组件前后执行工作. 管道由 IApplicationBuilder 创建: 每个委托都可以在下一个委托前后执行操作,.此外,委托还可以决定不将请求传递给下一个委托,这就是对请求管道进行短路.通常需要短路,是因为这样可以避免不必要的工作.比如: 1.静态文件中间件可以返回静态文件请求并使管道的其余

Java基础知识二次学习-- 第一章 java基础

基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一章  JAVA简介 时间:2017年4月24日10:23:32 章节:01章_02节 内容:jdk的配置与安装 完成情况:已经完成,cmd中javac提示出相关命令 时间:2017年4月24日10:30:39 章节:01章_04节 内容:输出HelloWorld 完成情况: 已经完成 javac先将

Java基础知识(二)

1,字符串 new String("abc")创建了几个对象? 一个或两个,如果常量池中原来有"abc",则只创建一个对象:如果常量池中原来没有字符串"abc",那么就会创建两个对象. String s="abc"; String s1="ab"+"c"; System.out.println(s==s1); 输出 true ,因为"ab"+"c"

Powershell基础知识(二)

上一节主要介绍Powershell可发现,面向对象,一致性等特性,以及Powershell命令是基于.Net对象等重要概念,以及Powershell命令的命名规范,详细内容点击这里. 这一节的Powershell基础知识主要包含以下知识点 获取命令的摘要信息. 获取命令的帮助信息. 总结. 获取命令的摘要信息 Powershell命令 Get-Command 可检索当前shell中所有可用的命令名称.在Powershell提示符输入 Get-Command ,输出的内容类似以下内容(以下只写出输

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

常用基本数据类型: null null用于表示空值或者不存在的字段: {"data":null} 布尔型 布尔类型只有两个值,true和false: {"data":true}.{"data":false} 字符串 字符串类型的数据是由UTF-8字符组成: {"data":"pingan"} 正则表达式 查询时,使用正则表达式作为限定条件,语法和javascript的正则表达式一样: {"data

MongoDB基础知识(一)

互联网行业的发展非常的迅速,数据存储以及架构优化方面也有很多不同的解决方案,例如关系型数据库.非关系型数据库.数据仓库技术等.更多数据库类产品的出现,为我们很好的解决了数据存储的问题,例如Redis缓存,MySQL关系型数据库,MongoDB文档型数据库,Hbase数据仓库等. 随着业务的发展,在对架构优化时,选取了MongoDB存储一部分数据,作为一个运维人员只能迎头赶上,去学习操作和维护相关知识.下面的文档就是自己学习MongoDB数据库的学习笔记,主要有以下特点: 1.理论较少,主要是实际

计算机科学基础知识(二)Relocatable Object File

一.前言 一个合格的c程序员(也可以叫做软件工程师,这样看起来更高大上,当然,我老婆心情不好的时候总是叫我"死打字的",基本也能描述这份职业,呵呵)需要理解编译.链接和加载的过程,而不是仅仅关注c语言的语法和词法.本文主要以此为切入点,描述linux系统下,一个普通的hello world程序的生命历程,并借机灌输一些程序编译时和运行时的基本术语和概念.当然,由于我本人是一个linuxer,因此借用linux来描述这些知识会方便些,但是对于计算机科学而言,这些东西概念上是类似的,只是实