MongoDB数据库
MongoDB安装及配置
-
解压
目录为D:\ProgramFiles\mongodb-win32-x86_64-2012plus-4.2.5 -
创建数据目录
MongoDB将数据目录存储在db下,但这个目录不会主动创建,在mongodb解压目录下创建data/db目录
- 创建日志目录
mongodb目录下的data/log
- 在bin目录下新建配置文件mongo.config
logpath=D:\ProgramFiles\mongodb-win32-x86_64-2012plus-4.2.5\data\log\mongod.log #日志文件
dbpath=D:\ProgramFiles\mongodb-win32-x86_64-2012plus-4.2.5\data\db #数据库目录
logappend=true #日志追加模式
- 配置windows服务
使用命令提示符进入mongodb目录下的bin目录,执行
mongod --config "D:\ProgramFiles\mongodb-win32-x86_64-2012plus-4.2.5\bin\mongo.config" --install --serviceName "MongoDB"
-
在cmd中运行services.msc查看服务中是否有MongoDB服务
-
设置开机自启动
net start MongoDB
- 连接mongodb
在bin目录下执行mongo.exe,进入MongoDB后台,默认链接test文档(数据库)
MongoDB概念解析
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
MongoDB 基本操作
创建数据库
use DATABASE_NAME
查看数据库
show dbs
查看当前数据库
db
删除当前数据库
db.dropDatabase()
插入文档
语法格式 : db.COLLECTION_NAME.insert(document)
db.col.insert({
title: 'MongoDB 教程',
description: 'MongoDB 是一个 Nosql 数据库',
by: 'w3cschool',
url: 'http://www.w3cschool.cn',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
更新文档
语法格式: db.collection.update(criteria,objNew,upsert,multi)
注意:update似乎无法做到只更新某一个字段的值,即如果在objNew里面只写更改的数据,那么其余的字段值会被删除掉。
update()函数接受以下四个参数:
- criteria : update的查询条件,类似sql update查询内where后面的。
- objNew : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
- upsert : 这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
document=({
"user_id" : "QRSTBWN","password" :"QRSTBWN" ,"date_of_join" : "17/10/2010" ,"education" :"M.B.A."
, "profession" : "MARKETING","interest" : "MUSIC","community_name" :["MODERN MUSIC", "CLASSICAL MUSIC","WESTERN
MUSIC"],"community_moder_id" : ["MR. BBB","MR. JJJ","MR MMM"],"community_members" : [500,200,1500],"friends_id" :
["MMM123","NNN123","OOO123"],"ban_friends_id" :["BAN123","BAN456","BAN789"]});
//-------------------------------------------------------------------------------------------------------------------------
db.userdetails.update({
"user_id" : "QRSTBWN"},{
"user_id" : "QRSTBWN","password" :"NEWPASSWORD"
,"date_of_join" : "17/10/2010" ,"education" :"M.B.A." , "profession" : "MARKETING","interest" :
"MUSIC","community_name" :["MODERN MUSIC", "CLASSICAL MUSIC","WESTERN MUSIC"],"community_moder_id" : ["MR.
BBB","MR. JJJ","MR MMM"],"community_members" : [500,200,1500],"friends_id" : ["MMM123","NNN123","OOO123"],"ban_friends_id" :["BAN123","BAN456","BAN789"]});
删除文档
基本语法 :
db.collection.remove(,{justOne:,WirteConcern:})
参数说明:
-
query :(可选)删除的文档的条件。
-
justOne : (可选)如果设为 true 或 1,则只删除一个文档。
-
writeConcern :(可选)抛出异常的级别。
db.col.remove({‘title’:‘MongoDB 教程’})
//如果只想删除找到的第一条记录可以设置justOne为1
db.collection_name.remove(deletion_criteria,1)
//删除所有数据
db.collection_name.remove({})
查询文档
基本语法 : db.collection_name.find().pretty()
操作 | 格式 | 范例 | RDBMS中的类似语句 |
---|---|---|---|
等于 | {:} | db.col.find({“by”:“菜鸟教程”}).pretty() | where by = ‘菜鸟教程’ |
小于 | {:{$lt:}} | db.col.find({“likes”:{$lt:50}}).pretty() | where likes < 50 |
小于或等于 | {:{$lte:}} | db.col.find({“likes”:{$lte:50}}).pretty() | where likes <= 50 |
大于 | {:{$gt:}} | db.col.find({“likes”:{$gt:50}}).pretty() | where likes > 50 |
大于或等于 | {:{$gte:}} | db.col.find({“likes”:{$gte:50}}).pretty() | where likes >= 50 |
不等于 | {:{$ne:}} | db.col.find({“likes”:{$ne:50}}).pretty() | where likes != 50 |
MongoDB AND 条件
db.col.find({key1:value1, key2:value2}).pretty()
MongoDB OR 条件
db.col.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
AND 和 OR 联合使用
db.col.find({"likes": {$gt:50}, $or: [{"by": "w3cschool"},{"title": "MongoDB 教程"}]}).pretty()
$type条件操作符
$type操作符可以过滤某一个字段为某一个类型的数据,如String或者double
db.col.find({
"title" : {
$type : 2}})
Limit和Skip方法
MongoDB Limit() 方法
语法:db.COLLECTION_NAME.find().limit(NUMBER)
如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
db.mycol.find({},{"title":1,_id:0}).limit(2)
Skip() 方法
使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。
语法:db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
<