一、先登录Mongodb官网https://www.mongodb.com/download-center#community 下载 安装包。32、64位的都行。
二、安装MongoDB
下载后的安装包:
安装比较简单,类似于普通QQ软件,中间主要是选择“Custom”自定义 安装路径修改下:E:\software\MongoDB\
然后不断“下一步”,安装至结束。
安装比较容易。难点在启动Mongodb的服务以及将MongoDB设置成Windows服务,加配置文件在windows的“服务”中找到。
三、先创建数据库文件的存放位置
在MongoDB下创建data,在data下再创建db:E:\software\MongoDB\data\db
因为启动mongodb服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。
四、启动MongoDB服务
1.打开cmd命令行
2.进入E:\software\MongoDB\bin目录(注意:先输入E:进入E盘,然后输入cd E:\software\MongoDB\bin)
3.输入如下的命令启动mongodb服务: mongod --dbpath E:\software\MongoDB\data\db
即是在第三步创建的数据库存放文件路径下启动。
4.在浏览器输入http://localhost:27017 (27017是mongodb的端口号)查看,若显示:
则表示,连接成功。如果不成功,可以查看端口是否被占用。
但是在本地windows“服务”中,是没有配置上mongodb 服务的,可以打开“服务”看下
五、配置本地windows mongodb 服务
这样可设置为 开机自启动,可直接手动启动关闭,可通过命令行net start MongoDB 启动。该配置会大大方便。
1.先在data文件下创建一个新文件夹log(用来存放日志文件)
2.在Mongodb新建配置文件mongo.config
可能很多人都不会创建.config配置文件。那给大家介绍下简单的方法:
先创建一个mongo.txt文件,再打开,点击”另存为“,将底下的文件类型更改为”全部类型“,并更改文件名称为mongo.config。
这样就可以创建一个config的配置文件了。
坑:此文件不能是utf-8 默认的,不然报错
2.用记事本打开mongo.config ,并输入:
dbpath=E:\software\MongoDB\data\dblogpath=E:\software\MongoDB\data\log\mongo.log
3.用管理员身份打开cmd:
可能还有很多人不会管理员身份打开cmd。这也介绍下:
在下图路径下找到cmd 的运行文件
4.配置windows服务:
cmd先跳转到 E:\software\MongoDB\bin目录下。
输入: mongod --config E:\software\MongoDB\mongo.config --install --serviceName "MongoDB"
即根据刚创建的mongo.config配置文件安装服务,名称为MongoDB。
安装成功!!!!
2. MongoDB 创建数据库
语法
use DATABASE_NAME
- 1
创建一个 souyunku
的数据库,使用 db
命令查看
> use souyunku
switched to db souyunku
> db
souyunku
>
- 1
- 2
- 3
- 4
- 5
查看所有数据库使用show dbs
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
>
- 1
- 2
- 3
- 4
- 5
- 6
可以看到,刚创建的数据库 souyunku
并不在数据库的列表中, 要显示它,我们需要向 souyunku 数据库插入一些数据。
> db.souyunku.insert({"name":"关注公众号,搜云库,专注于开发技术的研究与知识分享"})
WriteResult({ "nInserted" : 1 })
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
souyunku 0.000GB
test 0.000GB
>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
MongoDB
中默认的数据库为 test
,如果你没有创建新的数据库,集合将存放在 test
数据库中。
3. MongoDB 删除数据库
MongoDB
删除数据库的语法
db.dropDatabase()
- 1
实例
以下操作会把souyunku
数据删除
查看所有数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
souyunku 0.000GB
test 0.000GB
- 1
- 2
- 3
- 4
- 5
- 6
切换到souyunku
数据库
> use souyunku
switched to db souyunku
- 1
- 2
使用db.dropDatabase()
删除数据库
> db.dropDatabase()
{ "dropped" : "souyunku", "ok" : 1 }
- 1
- 2
看到已经删除了
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
>
- 1
- 2
- 3
- 4
- 5
- 6
4. MongoDB 插入文档
MongoDB
使用 insert()
或 save()
方法向集合中插入文档,语法如下:
db.COLLECTION_NAME.insert(document)
- 1
以下文档可以存储在 MongoDB
的 souyunku
数据库 的 col
集合中:
切换到souyunku
数据库
> use souyunku
switched to db souyunku
- 1
- 2
db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '搜云库教程-专注于开发技术的研究与知识分享',
url: 'http://www.souyunku.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
> db.col.find()
- 1
以上实例中 col
是我们的集合名,如果该集合不在该数据库中, MongoDB
会自动创建该集合并插入文档。
查看已插入文档:
响应
{
"_id": ObjectId("5a69eb32ec3046ee8ae54dbb"),
"title": "MongoDB 教程",
"description": "MongoDB 是一个 Nosql 数据库",
"by": "搜云库教程-专注于开发技术的研究与知识分享",
"url": "http://www.souyunku.com",
"tags": ["mongodb", "database", "NoSQL"],
"likes": 100
}
>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
我们也可以将数据定义为一个变量,如下所示:
document=({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '搜云库教程-专注于开发技术的研究与知识分享',
url: 'http://www.souyunku.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
执行后显示结果如下:
{
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "搜云库教程-专注于开发技术的研究与知识分享",
"url" : "http://www.souyunku.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
执行插入操作:
> db.col.insert(document)
WriteResult({ "nInserted" : 1 })
>
- 1
- 2
- 3
插入文档你也可以使用 db.col.save(document)
命令。如果不指定 _id
字段 save()
方法类似于 insert()
方法。如果指定 _id
字段,则会更新该 _id
的数据。
3.2 版本后还有以下几种语法可用于插入文档:
db.collection.insertOne()
:向指定集合中插入一条文档数据。
db.collection.insertMany()
:向指定集合中插入多条文档数据。
插入单条数据
> var document = db.collection.insertOne({"title": "搜云库"})
> document
{
"acknowledged" : true,
"insertedId" : ObjectId("5a69f0dfec3046ee8ae54dbe")
}
> db.collection.find()
{ "_id" : ObjectId("5a69f0dfec3046ee8ae54dbe"), "title" : "搜云库" }
>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
插入多条数据
> var res = db.collection.insertMany([{"title": "搜云库"}, {'description': "关注公众号,搜云库,专注于开发技术的研究与知识分享"}])
> res
{
"acknowledged" : true,
"insertedIds" : [
ObjectId("5a69f188ec3046ee8ae54dbf"),
ObjectId("5a69f188ec3046ee8ae54dc0")
]
}
> db.collection.find()
{ "_id" : ObjectId("5a69f0dfec3046ee8ae54dbe"), "title" : "搜云库" }
{ "_id" : ObjectId("5a69f188ec3046ee8ae54dc0"), "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享" }
>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
5. MongoDB 删除文档
MongoDB remove()
函数是用来移除集合中的数据。
MongoDB
数据更新可以使用update()
函数。在执行remove()
函数前先执行find()
命令来判断执行的条件是否正确,这是一个比较好的习惯。
remove()
方法已经过时了,现在官方推荐使用 deleteOne()
和 deleteMany()
方法。
如删除集合下全部文档:
> db.col.deleteMany({})
{ "acknowledged" : true, "deletedCount" : 2 }
> db.col.find()
>
- 1
- 2
- 3
- 4
删除 title
等于 “搜云库” 的全部文档:
> db.collection.deleteMany({ title : "搜云库"})
{ "acknowledged" : true, "deletedCount" : 2 }
>
> db.collection.find()
{ "_id" : ObjectId("5a69f188ec3046ee8ae54dc0"), "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享" }
>
- 1
- 2
- 3
- 4
- 5
- 6
删除 weixin
等于 “souyunku” 的一个文档:
> db.col.insert({weixin:"souyunku"})
WriteResult({ "nInserted" : 1 })
> db.col.find()
{ "_id" : ObjectId("5a69f5a0ec3046ee8ae54dc1"), "weixin" : "souyunku" }
> db.col.deleteOne({weixin:"souyunku"})
{ "acknowledged" : true, "deletedCount" : 1 }
> db.col.find()
>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
6. MongoDB 查询文档
MongoDB
查询文档使用 find()
方法。
find()
方法以非结构化的方式来显示所有文档。
语法
MongoDB 查询数据的语法格式如下:
> db.collection.find(query, projection)
- 1
query
:可选,使用查询操作符指定查询条件projection
:可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
pretty() 方法以格式化的方式来显示所有文档。
db.col.insert({title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: '搜云库教程-专注于开发技术的研究与知识分享',
url: 'http://www.souyunku.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
> db.col.find().pretty()
{
"_id" : ObjectId("5a69f93598891b4abe9cc8cb"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "搜云库教程-专注于开发技术的研究与知识分享",
"url" : "http://www.souyunku.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
MongoDB 与 RDBMS Where 语句比较
6.1 MongoDB AND 条件
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
语法格式如下:
> db.col.find({key1:value1, key2:value2}).pretty()
- 1
实例
以下实例通过 by
和 title
键来查询 数据
> db.col.find({"by":"搜云库教程-专注于开发技术的研究与知识分享", "title":"MongoDB 教程"}).pretty()
{
"_id" : ObjectId("5a69f93598891b4abe9cc8cb"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "搜云库教程-专注于开发技术的研究与知识分享",
"url" : "http://www.souyunku.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
以上实例中类似于 WHERE 语句:WHERE by=’搜云库教程-专注于开发技术的研究与知识分享’ AND title=’MongoDB 教程’
6.2 MongoDB OR 条件
MongoDB OR 条件语句使用了关键字 $or,语法格式如下:
>db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty
- 1
- 2
- 3
- 4
- 5
- 6
- 7
实例
以下实例中,我们演示了查询键 by 值为 “搜云库教程-专注于开发技术的研究与知识分享” 或键 title 值为 MongoDB 教程 的文档。
> db.col.find({$or:[{"by":"搜云库教程-专注于开发技术的研究与知识分享"},{"title": "MongoDB 教程"}]}).pretty()
{
"_id" : ObjectId("5a69f93598891b4abe9cc8cb"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "搜云库教程-专注于开发技术的研究与知识分享",
"url" : "http://www.souyunku.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
6.3 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("5a69f93598891b4abe9cc8cb"),
"title" : "MongoDB 教程",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "搜云库教程-专注于开发技术的研究与知识分享",
"url" : "http://www.souyunku.com",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
7. MongoDB 条件操作符
条件操作符用于比较两个表达式并从MongoDB
集合中获取数据。
MongoDB
中条件操作符有:
(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
- 1
- 2
- 3
- 4
清空集合数据
db.col.remove({})
- 1
插入以下数据
> db.col.insert({
title: '测试数据200',
description: '关注公众号,搜云库,专注于开发技术的研究与知识分享',
by: '搜云库',
url: 'http://www.souyunku.com',
tags: ['test'],
likes: 200
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
> db.col.insert({
title: '测试数据150',
description: '关注公众号,搜云库,专注于开发技术的研究与知识分享',
by: '搜云库',
url: 'http://www.souyunku.com',
tags: ['test'],
likes: 150
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
> db.col.insert({
title: '测试数据100',
description: '关注公众号,搜云库,专注于开发技术的研究与知识分享',
by: '搜云库',
url: 'http://www.souyunku.com',
tags: ['test'],
likes: 100
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
使用find()命令查看数据:
> db.col.find()
{ "_id" : ObjectId("5a6a083598891b4abe9cc8cc"), "title" : "测试数据200", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 200 }
{ "_id" : ObjectId("5a6a083e98891b4abe9cc8cd"), "title" : "测试数据150", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 150 }
{ "_id" : ObjectId("5a6a084498891b4abe9cc8ce"), "title" : "测试数据100", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 100 }
>
- 1
- 2
- 3
- 4
- 5
7.1 MongoDB (>) 大于操作符 - $gt
db.col.find({"likes" : {$gt : 100}})
- 1
类似于SQL语句:
select * from col where likes > 100;
- 1
输出结果
{ "_id" : ObjectId("5a6a083598891b4abe9cc8cc"), "title" : "测试数据200", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 200 }
{ "_id" : ObjectId("5a6a083e98891b4abe9cc8cd"), "title" : "测试数据150", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 150 }
>
- 1
- 2
- 3
7.2 MongoDB(>=)大于等于操作符 - $gte
如果你想获取”col”集合中 “likes” 大于等于 100 的数据,你可以使用以下命令:
db.col.find({likes : {$gte : 100}})
- 1
类似于SQL语句:
select * from col where likes >=100;
- 1
输出结果:
{ "_id" : ObjectId("5a6a083598891b4abe9cc8cc"), "title" : "测试数据200", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 200 }
{ "_id" : ObjectId("5a6a083e98891b4abe9cc8cd"), "title" : "测试数据150", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 150 }
{ "_id" : ObjectId("5a6a084498891b4abe9cc8ce"), "title" : "测试数据100", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 100 }
>
- 1
- 2
- 3
- 4
7.3 MongoDB (<) 小于操作符 - $lt
如果你想获取”col”集合中 “likes” 小于 150 的数据,你可以使用以下命令:
db.col.find({likes : {$lt : 150}})
- 1
类似于SQL语句:
select * from col where likes < 150;
- 1
输出结果:
> db.col.find({likes : {$lt : 150}})
{ "_id" : ObjectId("5a6a084498891b4abe9cc8ce"), "title" : "测试数据100", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 100 }
>
- 1
- 2
- 3
7.4 MongoDB (<=) 小于操作符 - $lte
如果你想获取”col”集合中 “likes” 小于等于 150 的数据,你可以使用以下命令
db.col.find({likes : {$lte : 150}})
- 1
类似于SQL语句:
select * from col where likes <= 150;
- 1
输出结果:
> db.col.find({likes : {$lte : 150}})
{ "_id" : ObjectId("5a6a083e98891b4abe9cc8cd"), "title" : "测试数据150", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 150 }
{ "_id" : ObjectId("5a6a084498891b4abe9cc8ce"), "title" : "测试数据100", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 100 }
>
- 1
- 2
- 3
- 4
7.5 MongoDB 使用 (<) 和 (>) 查询 - lt和lt和gt
如果你想获取”col”集合中 “likes” 大于100,小于 200 的数据,你可以使用以下命令:
db.col.find({likes : {$lt :200, $gt : 100}})
- 1
类似于SQL语句:
select * from col where likes>100 AND likes<200;
- 1
输出结果:
> db.col.find({likes : {$lt :200, $gt : 100}})
{ "_id" : ObjectId("5a6a083e98891b4abe9cc8cd"), "title" : "测试数据150", "description" : "关注公众号,搜云库,专注于开发技术的研究与知识分享", "by" : "搜云库", "url" : "http://www.souyunku.com", "tags" : [ "test" ], "likes" : 150 }
>
- 1
- 2
- 3
一些简写说明:
$gt -------- greater than >
$gte --------- gt equal >=
$lt -------- less than <
$lte --------- lt equal <=
$ne ----------- not equal !=
$eq -------- equal =