首页 > 编程知识 正文

mongodb,mongodb to mysql

时间:2023-05-03 07:31:30 阅读:195524 作者:521

usingSystem;usingSystem.Collections.Generic;usingSystem.Net;usingETModel;usingMongoDB.Bson;usingMongoDB.Bson.Serialization;usingMongoDB.Driver;namespaceETHotfix

{

[MessageHandler(AppType.Gate)]public class C2G_EnterMapHandler : AMRpcHandler{protected override asyncETTask Run(Session session, C2G_EnterMap request, G2C_EnterMap response, Action reply)

{

Log.Info("--create player--");

Player player= session.GetComponent().Player;//在map服务器上创建战斗Unit,默认第一个Map服务器

IPEndPoint mapAddress = StartConfigComponent.Instance.MapConfigs[0].GetComponent().IPEndPoint;

Log.Info("向Map服务器发送创建玩家信息。Map Address :" + mapAddress.Address + "--" +mapAddress.Port);

Session mapSession= Game.Scene.GetComponent().Get(mapAddress);

M2G_CreateUnit createUnit= (M2G_CreateUnit)await mapSession.Call(new G2M_CreateUnit() { PlayerId = player.Id, GateSessionId =session.InstanceId });

player.UnitId=createUnit.UnitId;

response.UnitId=createUnit.UnitId;// ///************ 数据库demo ************/// //数据库操作对象//DBProxyComponent dbProxy = Game.Scene.GetComponent();// // //保存到数据库//await dbProxy.Save(player);//Log.Info("--保存成功---");// //查询账号是否存在//Player resultd = await dbProxy.Query(player.Id);//Log.Info(MongoHelper.ToJson(resultd));//

// //根据Account账号查找,可能有多个//List results = await dbProxy.Query(_account => _account.Account == player.Account);//Log.Info(results.Count + "");//if (results.Count > 0)//{//Log.Info(MongoHelper.ToJson(results[0]));//}

/************ 数据库demo 分布式服务器中************/

//获取DB服务器地址

IPEndPoint dbAddress = StartConfigComponent.Instance.DBConfig.GetComponent().IPEndPoint;

Log.Info("获取DB服务器地址 :" + dbAddress.Address + "--" +dbAddress.Port);

Session dbSession= Game.Scene.GetComponent().Get(dbAddress);await dbSession.Call(new DBSaveRequest { Component =player});

Log.Info("--保存成功---");

DBQueryResponse dbQueryResponse= (DBQueryResponse)await dbSession.Call(new DBQueryRequest { CollectionName ="Player", Id =player.Id });

Player result=(Player)dbQueryResponse.Component;

Log.Info(MongoHelper.ToJson(result));//序列化查询json,来着 await dbProxy.Query(_account => _account.Account == player.Account); 函数中

ExpressionFilterDefinition filter = new ExpressionFilterDefinition(_account => _account.Account ==player.Account);

IBsonSerializerRegistry serializerRegistry=BsonSerializer.SerializerRegistry;

IBsonSerializer documentSerializer = serializerRegistry.GetSerializer();string json =filter.Render(documentSerializer, serializerRegistry).ToJson();

DBQueryJsonResponse resultsList= (DBQueryJsonResponse)await dbSession.Call(new DBQueryJsonRequest { CollectionName ="Player",Json =json});

List list =resultsList.Components;

Log.Info(list.Count+ "---size");if (list.Count > 0)

{

Log.Info(MongoHelper.ToJson(list[0]));

}

reply();

}

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。