유니티

[Unity] Mongo DB <---> Unity 데이터 연동

simstealer 2022. 10. 1. 12:21
using MongoDB.Bson;
using MongoDB.Driver;
using MongoDB.Driver.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;

public class DatabaseAccess : MonoBehaviour
{
    // ###############################################
    //             NAME : Simstealer                      
    //             MAIL : minsub4400@gmail.com         
    // ###############################################

    MongoClient client = new MongoClient("몽고DB string 넣으면 됩니다.");
    IMongoDatabase database;
    IMongoCollection<BsonDocument> collection;

    void Start()
    {
    	// 데이터 베이스 명
        database = client.GetDatabase("TestDataBase");
        // 콜렉션 명
        collection = database.GetCollection<BsonDocument>("TestCollection");

        // 테스트 하고 지워줘야합니다.
        GetScoresFromDataBase();
    }

    public async void SaveScoreToDateBase(string userName, int score)
    {
        var document = new BsonDocument { { userName, score } };
        await collection.InsertOneAsync(document);
    }

    public async Task<List<HighScore>> GetScoresFromDataBase()
    {
        var allScoreTask = collection.FindAsync(new BsonDocument());
        var scoreAwaited = await allScoreTask;

        List<HighScore> highScores = new List<HighScore>();
        foreach (var score in scoreAwaited.ToString())
        {
            highScores.Add(Deserialize(score.ToString()));
        }

        return highScores;
    }

    private HighScore Deserialize(string rawJson)
    {
        var highScore = new HighScore();

        // userName이 200인 데이터를 찾는다.
        var filter = Builders<BsonDocument>.Filter.Eq("userName", 200);

        // .TiList()는 해당 조건의 전체 데이터를 찾고
        //var result1 = collection.Find(filter).ToList();
        // .FirstOrDefault()는 해당 조건의 첫번째 하나의 데이터를 찾는다
        var result2 = collection.Find(filter).FirstOrDefault();

        // userName을 Key로 Value를 찾아서 출력
        //string Roomname = result1[0].GetElement("userName").Value.ToString();
        //Debug.Log(Roomname);

        return highScore;
    }
}

public class HighScore
{
    public string UserName { get; set; }
    public int Score { get; set; }
    public int Age { get; set; }
}

MongoDBDlls.zip
0.76MB