nosql使用

 

mongodb

安装

docker部署

docker run -itd --name mongo_test -p 27017:27017 mongo --auth 

docker exec -it mongo_test mongosh admin

连接

db.auth(用户名, 密码)

创建

用户

创建用户, 名为 admin, 密码为 123456

db.createUser({ user:'admin', pwd:'123456', roles:[{ role:'userAdminAnyDatabase', db:'admin'}, "readWriteAnyDatabase"]})

创建数据库

use 数据库

创建 test 数据库, 这里暂不会显示, 因为其中还未插入数据

创建集合

db.createCollection("集合")

创建 stu 集合

增加

插入数据

db.[集合].insert(JSON数据1, JSON数据2...)

向stu集合插入两条数据

db.stu.insert([{name:"Ling", age:20}, {name:"Wang", age:22}])

查询

全部查询

db.[集合].find()

格式化显示集合内所有文档

db.[集合].find().pretty()

条件查询

db.[集合].find({key:value}).pretty()

查询 stu 集合中 name 为 Ling 文档

db.stu.find({name:"Ling"}).pretty()

查询年龄大于等于 21 文档

db.stu.find({age:{$gte:21}}).pretty()
操作 格式
等于 {key:value}
小于 {key:{$lt:value}}
小于或等于 {key:{$lte:value}}
大于 {key:{$gt:value}}
大于或等于 {key:{$gte:value}}
不等于 {key:{$ne:value}}

修改

db.[集合].update({key1:value}, {$set:{key2:new_value}})

将 name 为 Ling 文档中 age 值改为 30

db.stu.update({name:"Ling"}, {$set:{age:30}})

删除

db.[集合].remove({key:value})
  • 删除 name=Ling 文档
db.stu.remove({name:"Ling"})

使用

python

  • 连接
pymongo.MongoClient("mongodb://用户名:密码@IP:端口/")
import pymongo

client = pymongo.MongoClient("mongodb://admin:123456@192.168.1.36:27017/")
dbs = client.list_database_names()

# ['admin', 'config', 'local', 'test']
print(dbs)
  • 获取集合
# 获取test数据库中所有集合
collects = client['test'].list_collection_names()

# ['stu']
print(collects)
  • 获取文档
# 获取test数据库stu集合
collect = client['test']['stu']

# 遍历集合输出文档
for i in collect.find():
    print(i)
  • 按条件获取
集合.find(key:value)
collect = client['test']['stu']

# 获取 name 为 Ling 的人员信息
data = collect.find({"name":"Ling"})[0]

# {'_id': ObjectId('61deb1b9e67fb54f984ccf8f'), 'name': 'Ling', 'age': 30.0}
print(data)
  • 插入文档

单条插入

insert_one(JSON数据)

多条插入

insert_many(JSON数据1, JSON数据2...)
...
collect = client['test']['stu']
collect.insert_one({"name":"new_name", "age":19})
collect.insert_many([
    {"name":"new_name2", "age", 20}, 
    {"name":"new_name3", "age":19}, 
    {"name":"new_name4", "age":19}
])

for i in collect.find():
    print(i)

redis

命令

建立键

SET key redis

删除键

DEL key

检查key存在

EXISTS key

key设置过期时间

EXPIRE key seconds

返回key剩余生存时间

TTL key

安全操作

设置密码

CONFIG set requirepass "密码"

查看密码

CONFIG get requirepass

docker部署

允许远程访问

  • 新建redis.conf
# Turn off protection mode 
protected-mode no  

# password
requirepass 123456
  • 拉取容器
docker run -itd --name redis-test -p 6379:6379 -v $PWD/redis.conf:/etc/redis/redis.conf redis
docker run -itd -p 6379:6379 -v $PWD/redis.conf:/etc/redis/redis.conf --name redis-server redis 

连接

docker exec -it redis-test redis-cli