MongoDB基础知识 01

MongoDB基础知识 

1. 文档 

文档是MongoDB中的数据的基本单元,类似于关系型数据库管理系统的行。

文档是键值对的一个有序集。通常包含一个或者多个键值对。

例如:

{”greeting" : "Hello, world!", "foo", 3}

2. 集合(collection)

集合就是一组文档,类似关系型数据库中的一张表。

3. 数据库(database)

多个文档组成集合,多个集合组成数据库。一个MongoDB实例可以承载多个数据库。

MongoDB中保留的有特殊语义的数据库:admin, local, config。

4. 启动MongoDB

运行mongod,启动数据库服务器。

Last login: Fri Aug 22 11:03:36 on ttys001
zhangxindeMacBook-Pro:~ zhangxin$ mongod
mongod --help for help and startup options
2014-08-22T11:51:55.900+0800 [initandlisten] MongoDB starting : pid=596 port=27017 dbpath=/data/db 64-bit host=zhangxindeMacBook-Pro.local
2014-08-22T11:51:55.901+0800 [initandlisten]
2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
2014-08-22T11:51:55.901+0800 [initandlisten] db version v2.6.4
2014-08-22T11:51:55.901+0800 [initandlisten] git version: 3a830be0eb92d772aa855ebb711ac91d658ee910
2014-08-22T11:51:55.901+0800 [initandlisten] build info: Darwin bs-osx108-4 12.5.0 Darwin Kernel Version 12.5.0: Sun Sep 29 13:33:47 PDT 2013; root:xnu-2050.48.12~1/RELEASE_X86_64 x86_64 BOOST_LIB_VERSION=1_49
2014-08-22T11:51:55.901+0800 [initandlisten] allocator: system
2014-08-22T11:51:55.901+0800 [initandlisten] options: {}
2014-08-22T11:51:55.902+0800 [initandlisten] journal dir=/data/db/journal
2014-08-22T11:51:55.902+0800 [initandlisten] recover : no journal files present, no recovery needed
2014-08-22T11:51:55.996+0800 [initandlisten] waiting for connections on port 27017

mongod在没有参数的情况下会使用默认数据目录,/data/db (windows系统中是C:\data\db),如果目录不存在或者不可写,服务器启动会失败。

在mac或者linux下可以用mkdir -p /data/db/ ,确保创建的目录有写权限。

关闭mongod,可用 Ctrl + C来关闭。

5. MongoDB shell 简介

在确保mongod 已经启动的情况下,打开一个新的命令行运行mongo启动shell。

Last login: Fri Aug 22 11:51:24 on ttys001
zhangxindeMacBook-Pro:~ zhangxin$ mongo
MongoDB shell version: 2.6.4
connecting to: test
Server has startup warnings:
2014-08-22T11:51:55.901+0800 [initandlisten]
2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
> 

shell是一个功能完备的JavaScript解释器,可运行任何JavaScript程序。

5.1 要查看当前指向哪个数据库,可以使用db命令:

为方便SQL shell的用户,shell还包含了一些非JavaScript语法的扩展。

选择数据库使用use + dbname(数据库名称),再使用db 查看db变量,则发现已经指向了dbname数据库。

Last login: Fri Aug 22 11:51:24 on ttys001
zhangxindeMacBook-Pro:~ zhangxin$ mongo
MongoDB shell version: 2.6.4
connecting to: test
Server has startup warnings:
2014-08-22T11:51:55.901+0800 [initandlisten]
2014-08-22T11:51:55.901+0800 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
> db
test
> use zhangxindb
switched to db zhangxindb
> db
zhangxindb
> 

5.2 shell 中的基本操作

5.2.1 创建

insert 函数可将一个文档添加到集合中。

创建一个名为post的局部变量,这是一个JavaScript对象,用于表示我们的文档。

> post = {"title":"My Blog Post", "content":"Here‘s my blog post.", "date":new Date() }
{
    "title" : "My Blog Post",
    "content" : "Here‘s my blog post.",
    "date" : ISODate("2014-08-22T03:53:31.624Z")
}
> 

这个对象是一个有效的MongoDB文档,用insert方法保存到blog集合中。

> db.blog.insert(post)
WriteResult({ "nInserted" : 1 })

> db.blog.findOne()
{
    "_id" : ObjectId("53f6bee6ef70aed220766a98"),
    "title" : "My Blog Post",
    "content" : "Here‘s my blog post.",
    "date" : ISODate("2014-08-22T03:53:31.624Z")
}
> 

5.2.2 读取

find和findOne()方法可以用于查询集合里的文档。如上图中所示。

5.2.3 更新

使用update修改博客文章。update方法至少接收两个参数,第一个是限定条件,第二个是新的文档。比如:

> post.comments = []
[ ]
> post
{
    "title" : "My Blog Post",
    "content" : "Here‘s my blog post.",
    "date" : ISODate("2014-08-22T03:53:31.624Z"),
    "comments" : [ ]
}
> db.blog.update({title:"My Blog Post"},post)
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.blog.findOne()
{
    "_id" : ObjectId("53f6bee6ef70aed220766a98"),
    "title" : "My Blog Post",
    "content" : "Here‘s my blog post.",
    "date" : ISODate("2014-08-22T03:53:31.624Z"),
    "comments" : [ ]
}
> 

4. 删除

使用remove方法可将文档从数据库中永久删除。如果没有任何参数,会将集合内所有文档全部删除。

> db.blog.remove({title:"My Blog Post"})
WriteResult({ "nRemoved" : 1 })
> db.blog.findOne()
null

本文适合零基础并且想快速入门的同学,写的非常简略简单就是为了用最短的时间入门,在入门后,再逐步深入,细细挖掘。不适合有基础,或者想慢慢啃的同学,相当于是快餐吧。有错误请不吝赐教。

参考资料:《MongoDB权威指南》

试验环境:mac 64位

MongoDB基础知识 01

时间: 2024-10-06 09:04:30

MongoDB基础知识 01的相关文章

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

python基础知识 01 python模块

Python基础知识 (1)python模块(2)如何声明python变量(3)进制转换(4)格式化数字(5)单行注释和多行注释(6)单引号和双引号字符串(7)拼接字符串(8)长字符串 第一课:python模块 python模块 = 封装了API的library 我们先不讲如何定义模块 ,我们先讲如何引用模块 模块分为2类 1.python自身提供的模块 2.自定义模块 //这两种方法呢,我们引用的方式是一样的 引用模块的关键字为import 这个和Java的引用方式是一样的,但是 有很大的区别

MongoDB基础知识(一)

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

MongoDB基础知识(二)

一.基本概念 1:文档(document)是MongoDB中数据的基本单元,非常类似于关系型数据库管理系统中的行 2:集合(collection)可以看做是一个拥有动态模式(dynamic schema)的表 3:MongoDB的一个实例可以拥有多个相互独立的数据库,每一个数据库拥有自己的集合 4:每一个文档都有一个特殊的键"_id",这个键在文档所属的集合中是唯一的. 5:MongoDB自带JavaScript shell,可用于管理MongoDB的实例或数据操作 可以看两张图,比较

02-1.Mongodb基础知识

·文档是Mongodb中数据的基本单元,非常类似于关系型数据库管理系统中的行,但更具有表现力. ·集合(collection)可以看作是一个拥有动态模式(dynamic schema)的表. ·Mongodb的一个实例可以拥有多个相互独立的数据库(database),每个数据库都拥有自己的集合. ·每一个文档都拥有一个特殊的键"_id",这个键在文档所属的集合中是唯一的. ·Mongodb自带了一个简单但功能强大的JavaScript Shell,可以用于管理Mongodb的实例或数据

02-2.Mongodb基础知识之使用Mongodb Shell

在启动Shell时指定机器名(地址)和端口就可以连接到该机器的数据库实例. mongo  somehost:27017/xxdb 通过--nodb参数启动Shell,不连接任何mongod实例. 启动之后,在需要时运行new Mongo(hostname)命令就可以连接到想要的mongod了. >conn = new Mongo("localhost:27017") connection to localhost:27017 >db = conn.getDB("t

MySQL基础知识01数据类型(一)字符串相关类型

1. CHAR 语法: CHAR (length) 其中length的取值范围为1到255. 超过255则报错: mysql> create table s3 ( value char(1023) primary key); ERROR 1074 (42000): Column length too big for column 'value' (max = 255); use BLOB or TEXT instead 例如:CHAR(20)表示最多包含20个字符的字符串.存储时,不足20个字符

mongodb基础知识_4

插入: 使用insert或save方法想目标集合插入一个文档: db.person.insert({"name":"ryan","age":30}); 使用batchInsert方法实现批量插入,它与insert方法非常类似,只是它接受的是一个文档数组作为参数.一次发送数十,数百乃至数千个文档会明显提高插入的速度. db.person.batchInsert([{"name":"ryan","ag

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

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