Mongodb是NoSQL的一种,NoSQL——No only SQL,非关系型数据库,并不能直接理解为“没有关系的数据库”,形象来说NoSQL是传统关系型数据库的功能阉割版本,减少了很少用的功能而已。NoSQL基于键值对,而且不需要经过SQL层的解析,所以具有不错的性能。
安装过程:
官网下载社区版本,“下一步”安装完成。
在安装目录F:\Mongodb下,新建Data文件夹,在Data文件夹下新建db文件夹和log文件夹,在log文件夹下新建MongoDB.log文件
CMD进入安装目录bin下,配置数据库路径:mongod–dbpath F:\mongodb\data\db
注意:这时候会卡在waiting for connections on port 27017,这是因为Mongodb已经启动的原因,再打开一个CMD,进入安装目录bin下,启动mongo.exe,就可以使用Mongodb了。
注册Mongodb service:
管理员打开CMD进入安装目录bin,输入:
mongod -dbpath "F:\MongoDB\Data\db" -logpath "F:\MongoDB\Data\log\MongoDB.log" -install -serviceName "MongoDB"
服务启动
net start mongodb
服务关闭
Net stop mongodb
参数 | 含义 |
--bind_ip | 绑定ip |
--logpath | 指定存放log的路径 |
--logappend | 使用追加方式写日志 |
--dbpath | 指定mongodb的存储路径 |
--port | 指定端口号,默认27017 |
--serviceName | 指定服务名称 |
--install | 作为一个windows服务安装 |
--remove | 将windows服务删除 |
mongoDB中的概念
SQL概念 | Mongodb概念 | 数目 |
Database | Database | 数据库 |
Table | Collection | 数据库表/集合 |
Row | Document | 数据行/文档 |
Column | Field | 数据字段列/域 |
Index | Index | 索引 |
Primary key | Primary key | 主键/Mongodb自动将_id字段设置为主键 |
Mongodb中的document的键值对是有序的,顺序不同这两个document就是不同的,document是区分大小写和值类型的。
Mongodb常见数据类型
String:字符串,在Mongodb中只有utf-8字符才是合法的。
Integer:整数。
Boolean:布尔类型。
Double:双精度浮点数。
Array:用于将数组或列表或多个值存储到一个键。
Timestamp:时间戳,用于记录文档修改或添加的具体时间。
Object:用于内嵌文档。
Null:用于创建空值。
Date:日期时间,用UNIX时间格式存储当前日期或时间。
Binary Data:二进制数据。
创建数据库:
Use database_name(如果数据库存在,则加载数据库,如果不存在则创建数据库)
查询数据库:
Show dbs(显示有数据的数据库)
删除数据库:
Db.dropDatabase()(删除当前正在使用的数据库)
集合中文档的增删改查
db.collection_name.insert(document)
查询文档
db.collection_name.find().pretty()(格式化显示)
条件查询
1. 等于{<key>:<value>}
db.user.find({“age”:18}).pretty()
2. 不等于{<key>:{$ne:<value>}}
db.user.find({“age”:{$ne:18}}).pretty()
3. 小于{<key>:{$lt:<value>}}
db.user.find({“age”:{$lt:18}}).pretty()
4. 小于或等于{<key>:{$lte:<value>}}
db.user.find({“age”:{$lte:18}}).pretty()
5. 大于{<key>:{$gt:<value>}}
db.user.find({“age”:”{$gt:18}}).pretty()
6. 大于或等于{<key>:{$gte:<value>}}
db.user.find({“age”:{$gte:18}}).pretty()
and查询
db.collection_name.find({key1:value1,key2:value2}).pritty()
or查询
db.collection_name.find($or:[{key1:value1},{key2:value2}]).pritty()
可以使用and和or联合查询
更新文档
update()
db.collection_name.update(
query,#查条件
update,#更新数据
{
upsert:Boolean,#如果没有是否插入新航,默认false
multi:Boolean,#如果找到多条需要更新的数据,是否全部更新,默认false
writeConcern:document#设置抛出异常的级别
}
)
把name为a的文档,改成b
db.user.update(
{
“name”:”a”
},
{
$set”:{
“name”:”b”
}
},
{
multi:true
}
)
save()通过传入文档替换已有文档
db.collection_name.save(
document,#准备写入数据库的数据
{
writeConcern:document #报错级别
}
)
#根据主键找到数据并修改
db.python.save({
“_id”:ObjectID(),
“name”:”lily”,
“description”:”thisis a pretty girl !!!”,
“age”:18
})
删除文档
db.collection_name.remove(
query,#删除之前先查询,如果没有条件,则删除所有
{
justOne:Boolean,#只删除一个文档,默认false
writeConcern:document#异常抛出级别
}
)
#删除name为a的文档
db.user.remove({
“name”:”a”
})
安装mongodb第三方库
pip install pymongo
导入pymongo
from pymongo import MongoClient
建立连接方法有
1. client = MongoClient()
2. client = MongoClient(‘localhost’,27017)
3. client =MongoClient(‘mongodb://localhost:27017/’)
获取数据库
1. db = client.hellodb
2. db = client[‘hellodb’]
获取一个集合
1. user_collection = db.user
2. user_collection = db[‘user’]
插入文档
1. 插入一行
user = {
“name”:”a”
“age”:19,
“sex”:”male”
}
user_id = user_collection.insert(user)
2. 插入多行
一个表含多个字典类型即可
查询文档
collection.find_one() 返回一条或者none
collection.find() 返回多条或者none
collection.find().count() 返回条数
修改文档
res = user_collection.update({“name”:”a”},{“$set”:{“name”:””b”}})
修改多条udate_many()
删除文档
res = user_collection.remove({“name”:”a”})