概念
关系型数据库不能满足三高需求:高并发 高性能 高可用
应用场景:
社交
游戏
物流
物联网
视频直播
什么时候需要MongoDB
对事务要求不高 对关联查询要求不高
需求随时会变,数据模型不能固定
访问量巨大
数据结构:
库 集合 文档 字段 索引
数据类型:
Object ID :Documents 自生成的 _id
String: 字符串,必须是utf-8
Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)
Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
Double:浮点数 (没有float类型,所有小数都是Double)
Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
Null:空数据类型 , 一个特殊的概念,None Null
Timestamp:时间戳
Date:存储当前日期或时间unix时间格式 (一般不用这个,时间戳足够用)
docker方式安装
docker pull mongo
docker run -itd --name mongo -p 27017:27017 -v /docker-mongo/data/db:/data/db mongo
docker exec -it f184fa8c9874 /bin/bash
mongo 127.0.0.1:27017
mongo --version
db.version()
use admin
db.createUser({
user:'admin',pwd:'123456',roles:[ {
role:'userAdminAnyDatabase', db: 'admin'}]});
db.createUser({
user:'user',pwd:'123456',roles:[ {
role:'readWrite', db: 'testdb'}]});
db.auth('user','123456')
基础语法
admin库
local
config
show dbs
use dbname
db
db.dropDatabase()
show collections
db.createCollection("collectionName")
db.collectionName.drop()
db.collectionName.insert({
name:'Larry',age:18})
db.collectionName.insertMany( [ {
name:'faker',age:18}, {
name:'mata',age:18}] )
db.collectionName.find({
})
db.collectionName.find( {
name:"mata"} )
db.collectionName.find( {
name:"mata"}, {
name:1} )
db.collectionName.count()
db.collectionName.find().count()
db.collectionName.count( {
userid:"1003"} )
db.collectionName.find().sort( {
userid:1, usercode:-1} )
db.collectionName.findOne()
db.collectionName.find().limit(2)
db.collectionName.find().limit(2).skip(3)
db.manyuser.find({
email:/88/})
$gt大于 $gte大于等于 $lt小于 $lte小于等于 $eq等于 $ne不等于
db.collectionName.find( {
userid:{
$gt:500, $lt:600}} )
$or $and
db.collectionName.find( {
$or: [{
userid:{
$gt :500}} , {
userid:{
$lt:600}}]} )
db.manyuser.find({
name:{
$in:[500]}})
db.col.find().pretty()
try{
......
} catch (e) {
print (e))
}
ObjectId()
db.name.update( {
_id:"1"},{
likename:NumberInt(1001) } )
db.name.update( {
_id:"2"},{
$set: {
likename:NumberInt(1001)} } )
db.name.update( {
_id:"2"},{
$set: {
likename:NumberInt(1001)} }, {
multi:true} )
db.emp.updateMany( {
sal:{
$lte:1000}}, {
$inc:{
sal:400}} )
for(var i=1; i<10000; i++){
db.test.insert({
name:i})
}
var arr = [];
for(var i=1; i<=1000000; i++){
arr.push( {
name:i, email:i+"@qq.com", age:i, salary:1*100} )
}
db.manyuser.insert(arr)
db.collectionName.remove( {
_id:"1"} )
db.collectionName.remove( {
_id:"1"}, 3 )
db.collectionName.remove({
})
db.collectionName.find({
"hobby.movies":"hero"})
$push
$addToSet
var u_name = db.test.findOne( {
_id:ObjectId("5edb879f5bb71661181523dd")} ).name;
db.test.find({
name:u_name})
db.test.replaceOne({
age:100},{
name:1002})
mongoimport --db test --collection test [--drop]--file C:\Users\vaynexiao\Desktop\1.json
索引
https://www.bilibili.com/video/BV1bJ411x7mq?p=15
之后的都没看
搭配菜鸟教程
https://www.runoob.com/mongodb/mongodb-regular-expression.html