MongDB入门资料(整理)
来源:互联网 发布:汕头淘宝村拿货 编辑:程序博客网 时间:2024/05/21 06:44
在mongodb中基本的概念是 文档、集合、数据库.(文档型数据库管理系统)
下表将帮助您更容易理解Mongo中的一些概念:NoSQL非标SQL
SQL术语/概念 MongoDB术语/概念 解释/说明
---------------------------------------------------------------------
database database 数据库,是一个容器
table collection 数据库表/集合
row (行) document 数据记录行/文档,是实际内容
column (列) field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键
----------------------------------------------------------------------
数据库服务和客户端
Mysqld/Oracle mongod
mysql/sqlplus mongo
需要注意的是:
1.文档中的键/值对是有序的。ObjectId("5803253bbcc418a1c49d3bed")
2.文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
3.MongoDB区分类型和大小写。
4.MongoDB的文档不能有重复的键。
5.文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
文档键命名规范:
键不能含有\0 (空字符)。这个字符用来表示键的结尾。
.和$有特别的意义,只有在特定环境下才能使用。
以下划线"_"开头的键是保留的(不是严格要求的)。
集合就是 MongoDB 文档组,类似于 RDBMS (关系数据库管理系统:Relational Database Management System)中的表格。
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
比如,我们可以将以下不同数据结构的文档插入到集合中:
{"site":"www.baidu.com"}
{"site":"www.google.com","name":"Google"}
{"site":"www.runoob.com","name":"菜鸟教程","num":5}
当第一个文档插入时,集合就会被创建。
重要说明: Mongo的交互环境下多数操作都是靠函数来完成的,而函数是区分大小写的.
基本操作:
增: db.[集合名称].insert({..})
删: db.[集合名称].remove({..})
改: db.[集合名称].update({..})
查: db.[集合名称].find({..}) / findOne({..}) / find({..}).pretty()
1.下载安装MongoDB
2.启动MongoD服务(服务器:一个控制台,不要关闭)
3.启动Mongo交互环境(客户端:退出时,再关闭MongoD服务)
4.显示数据库( > 是提示符):
> show dbs
5.显示集合(相当于表):
> show collections
6.创建及使用数据库(数据库存在时为使用,否则创建):
> use student //student已存在:打开;不存在:创建.也用于在不同的数据库中切换.
7.显示当前使用的数据库:
> db
8.退出
> exit
9.删除数据库(删除当前使用的数据库,应配合use命令切换到要删除的数据库后再删除)
> db.dropDatabase()
10.创建集合(相当于表,实际情况是使用插入语句插入一条文档时就会自动创建集合)
> db.createCollection("dangan") //创建一个dangan空集合(空表),下一行是创建一个自定义配置的mycol空集合
> db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } )
11.删除集合(相当于表,只删除):
> db.collection.drop() // collection是要删除的集合的名称
> db.dangan.drop() // 删除dangan集合
12.插入文档(增加)(创建col集合并插入一个文档):
> db.col.insert({
title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com', //注释:以上几个都是字符串类型
tags: ['mongodb', 'database', 'NoSQL'], //注释:tags是一个数组类型
likes: 100 //注释:likes是一个整数类型
})
//我们也可以将数据定义为一个变量,如下所示:
> document=({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
});
//执行插入操作
> db.col.insert(document)
13.查询文档:
> db.col.find() //非格式化显示col集合中的所有文档
> db.col.findOne() //格式化显示col集合的第一条文档
> db.col.find().pretty() //格式化显示col集合的所有文档
> db.col.find().limit(2) //只显示2条文档
> db.col.find().pretty().limit(2) //格式化显示2条文档
> db.col.find().pretty().limit(3).skip(2) //跳过2条文档再显示3条文档
> db.c159.find().pretty().sort({'id':-1}) //按字段id降序显示
> db.c159.find().pretty().sort({'id':1}) //按字段id升序显示
14.修改文档:
// 将原来title字段的值MongoDb 教程改为MongoDB
> db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
// 替换了 _id 为 56064f89ade2f21f36b03136 的文档数据:
> db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
//只更新第一条记录:
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
//全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
//只添加第一条:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
//全部添加加进去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
//全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
//只更新第一条记录:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
15.删除文档:
> db.col.remove({'title':'MongoDB 教程'}) //删除所有title为MongoDB 教程的文档
> db.COLLECTION_NAME.remove(DELETION_CRITERIA,1) //只删除符合条件的1条文档
> db.col.remove({}) //删除col集合中的所有文档,需慎重使用
---------------------------------------------------------------------------
MongoDB 中可以使用的类型如下表所示:
---------------------------------------------------------------------------
类型 数字 备注
Double 1
String 2
Object 3
Array 4
Binary data 5
Undefined 6 已废弃。
Object id 7
Boolean 8
Date 9
Null 10
Regular Expression 11
JavaScript 13
Symbol 14
JavaScript (with scope) 15
32-bit integer 16
Timestamp 17
64-bit integer 18
Min key 255 Query with -1.
Max key 127
---------------------------------------------------------------------------
高级查询:
MongoDB 与 RDBMS Where 语句比较
如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:
操作
格式
范例
RDBMS中的类似语句
等于 {<key>:<value>} db.col.find({"by":"菜鸟教程"}).pretty() where by = '菜鸟教程'
小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50
--------------------------------------------------------------------------------
MongoDB AND 条件
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,及常规 SQL 的 AND 条件。
语法格式如下:
>db.col.find({key1:value1, key2:value2}).pretty()
实例
以下实例通过 by 和 title 键来查询 菜鸟教程 中 MongoDB 教程 的数据
> db.col.find({"by":"菜鸟教程", "title":"MongoDB 教程"}).pretty()
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "菜鸟教程",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
以上实例中类似于 WHERE 语句:WHERE by='菜鸟教程' AND title='MongoDB 教程'
--------------------------------------------------------------------------------
MongoDB OR 条件
MongoDB OR 条件语句使用了关键字 $or,语法格式如下:
>db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
实例
以下实例中,我们演示了查询键 by 值为 菜鸟教程 或键 title 值为 MongoDB 教程 的文档。
>db.col.find({$or:[{"by":"菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "菜鸟教程",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
>
--------------------------------------------------------------------------------
AND 和 OR 联合使用
以下实例演示了 AND 和 OR 联合使用,类似常规 SQL 语句为: 'where likes>50 AND (by = '菜鸟教程' OR title = 'MongoDB 教程')'
>db.col.find({"likes": {$gt:50}, $or: [{"by": "菜鸟教程"},{"title": "MongoDB 教程"}]}).pretty()
{
"_id" : ObjectId("56063f17ade2f21f36b03133"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "菜鸟教程",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
描述
条件操作符用于比较两个表达式并从mongoDB集合中获取数据。
在本章节中,我们将讨论如何在MongoDB中使用条件操作符。
MongoDB中条件操作符有:
(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
我们使用的数据库名称为"runoob" 我们的集合名称为"col",以下为我们插入的数据。
为了方便测试,我们可以先使用以下命令清空集合 "col" 的数据:
db.col.remove({})
插入以下数据
>db.col.insert({
title: 'PHP 教程',
description: 'PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['php'],
likes: 200
})
>db.col.insert({title: 'Java 教程',
description: 'Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['java'],
likes: 150
})
>db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '菜鸟教程',
url: 'http://www.runoob.com',
tags: ['mongodb'],
likes: 100
})
使用find()命令查看数据:
> db.col.find()
{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }
MongoDB (>) 大于操作符 - $gt
如果你想获取 "col" 集合中 "likes" 大于 100 的数据,你可以使用以下命令:
db.col.find({"likes" : {$gt : 100}})
类似于SQL语句:
Select * from col where likes > 100;
输出结果:
> db.col.find({"likes" : {$gt : 100}})
{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
>
MongoDB(>=)大于等于操作符 - $gte
如果你想获取"col"集合中 "likes" 大于等于 100 的数据,你可以使用以下命令:
db.col.find({likes : {$gte : 100}})
类似于SQL语句:
Select * from col where likes >=100;
输出结果:
> db.col.find({likes : {$gte : 100}})
{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "php" ], "likes" : 200 }
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }
>
MongoDB (<) 小于操作符 - $lt
如果你想获取"col"集合中 "likes" 小于 150 的数据,你可以使用以下命令:
db.col.find({likes : {$lt : 150}})
类似于SQL语句:
Select * from col where likes < 150;
输出结果:
> db.col.find({likes : {$lt : 150}})
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }
MongoDB (<=) 小于操作符 - $lte
如果你想获取"col"集合中 "likes" 小于等于 150 的数据,你可以使用以下命令:
db.col.find({likes : {$lte : 150}})
类似于SQL语句:
Select * from col where likes <= 150;
输出结果:
> db.col.find({likes : {$lte : 150}})
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "mongodb" ], "likes" : 100 }
MongoDB 使用 (<) 和 (>) 查询 - $lt 和 $gt
如果你想获取"col"集合中 "likes" 大于100,小于 200 的数据,你可以使用以下命令:
db.col.find({likes : {$lt :200, $gt : 100}})
类似于SQL语句:
Select * from col where likes>100 AND likes<200;
输出结果:
> db.col.find({likes : {$lt :200, $gt : 100}})
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "菜鸟教程", "url" : "http://www.runoob.com", "tags" : [ "java" ], "likes" : 150 }
>
- MongDB入门资料(整理)
- MapXtreme入门资料整理
- dicom入门资料整理
- redis入门资料整理
- Processing入门资料整理
- git入门资料整理
- LaTeX 入门资料整理
- Mongdb常用资料地址
- [Java] Mina 入门资料整理
- PyQt4 入门学习资料整理
- SLAM 入门资料收集整理
- 摄像头标定入门资料整理
- MongDB入门简介
- mongdb 入门二
- MongDB学习资料大集合
- 【学习资料】 python入门 零基础入门 学习资料整理
- ArcGIS入门与应用相关资料整理
- hive 资料整理系列一 入门
- IntelliJ IDEA修改web项目访问路径
- Android的Json字符串用GSON解析注意的问题
- php中memcache的使用整理
- C++调用本地js
- 电脑关机后自动重启开机,或过一段时间自动重启开机问题解决
- MongDB入门资料(整理)
- VMWare10下克隆centos6
- 内存管理
- Python os.walk() 方法
- HTTP返回码中301与302的区别
- 从零开始,教你用Webpack构建React基础工程
- Xcode快捷键收集
- ios 补充占位符
- 杭电oj编码2020