MongoDB分别如何接入到python(FastApi),java(spring)中

目录

  • 1.docker安装mongodb
    • 1.1docker-compose容器编排
    • 1.2mongodb的设置
  • 2.python(FastApi)接入mongodb
    • 2.1pymongo
    • 2.2crud操作
  • 3.java(spring)接入mongodb
    • 3.1依赖引入
    • 3.2配置
    • 3.3使用

1.docker安装mongodb

1.1docker-compose容器编排

1.2mongodb的设置

mongodb很特殊的一点就是必须要进行权限设置,下面是登录的mongodb后,选择admin并进行权限认证,然后通过use可以创建出一个新的库lkp,然后可以通过db.createUser创建对应可以操作该库的用户和权限,对应的可以参考文档:https://cloud.tencent.com/developer/article/1506715

use admin
db.auth("admin","123456")
use lkp
db.createUser({ user: "root", pwd: "root", roles: [{ role: "dbAdmin", db: "lkp" },{ role: "readWrite", db: "lkp" }] })

2.python(FastApi)接入mongodb

2.1pymongo

pymongo是python用来操作mongodb的库,使用起来也非常简单。
首先需要下载该库,使用命令

pip install pymongo

之后便是在代码中引入了

from pymongo import MongoClient
# 创建mongodb的连接,连接方式如下,类似:mongodb://账号:密码@mongodb地址:端口
DB_CLIENT = MongoClient('mongodb://admin:[email protected]:27017')
# admin是默认的mongodb的库名称
DB = DB_CLIENT['admin']  
# 如上建立好了连接,下面的操作都是使用DB这个对象

2.2crud操作

首先顶一个数据模型,方便下面的操作

from pydantic import BaseModel
from typing import List
class Weather(BaseModel):
    today: str
    des: str
    temperature: str
    details: List[str]
    day: str
    update_time: int

下面就是对应的crud操作

from pymongo import MongoClient
from typing import List

# 单条插入,返回插入id
def save(weather: Weather):
    # 这里DB后面的weather就是对应的集合名称,不存在的时候会自动创建
    # 返回的是数据是 ObjectId 类型的。需要获取inserted_id就是刚插入的数据的id(自动生成的)
    inserted_obj = DB.weather.insert_one(weather.dict())
    return str(inserted_obj.inserted_id)


# 批量插入并,返回id列表
def batch_save(weather_list: List[Weather]):
    data_list = []
    for weather in weather_list:
        data_list.append(weather.dict())
    inserted_id_obj_list = DB.weather.insert_many(data_list)

    inserted_id_list = []
    for inserted_id_obj in inserted_id_obj_list:
        inserted_id_list.append(inserted_id_obj.inserted_id)
    return inserted_id_list


# 查询
def get(query: dict):
    result = []
    date_cursor = DB.weather.find(query)
    for x in date_cursor:
        # 将每条数据添加到数组中
        result.append(x)
    return result


# 删除数据
def delete(query: dict):
    DB.weather.delete_many(query)


# 更新数据
def update(weather: Weather):
    query = {"day": weather.day}
    values = {"$set": weather.dict()}
    DB.weather.update_many(query, values)

3.java(spring)接入mongodb

3.1依赖引入

>
    >org.springframework.boot>
    >spring-boot-starter-data-mongodb>
>

3.2配置

spring:
  data:
    mongodb:
      uri: mongodb://root:root@${myurl.mongodb}/lkp

3.3使用

@Autowired
private MongoTemplate mongoTemplate;
//然后在直接在代码中对mongoTemplate操作即可,里面封装了完善的操作api,具体内容自行搜索相关资料

你可能感兴趣的:(python,Spring家族,Docker,mongodb,fastapi,python,java,pymongo)