码迷,mamicode.com
首页 > 数据库 > 详细

asp.net的mongodb实例

时间:2015-06-16 16:22:17      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

先记录需要的代码,文章稍后再添加。

  1     public class MongoNearby
  2     {
  3         private static object objLock = new object();
  4         private static MongoDatabase mongo ;
  5 
  6         private static MongoDatabase Instance
  7         {
  8             get
  9             {
 10                 if (mongo == null)
 11                 {
 12                     lock (objLock)//防止多线程构造
 13                     {
 14                         string connctionString = "mongodb://192.168.1.x:27017";
 15                         MongoClient client = new MongoClient(connctionString);
 16                         MongoServer server = client.GetServer();
 17                         mongo = server.GetDatabase("nearby");//数据库
 18                     }
 19                 }
 20                 return mongo;
 21             }
 22         }
 23 
 24         /// <summary>
 25         /// 保存记录
 26         /// </summary>
 27         /// <param name="info"></param>
 28         /// <returns></returns>
 29         public static bool SaveNearby(NearInfo info)
 30         {
 31             if (info == null)
 32                 return false;
 33             try
 34             {
 35                 MongoCollection collection = Instance.GetCollection<NearInfo>("userinfo");
 36                 QueryDocument query = new QueryDocument();
 37                 query.Add("userid", info.userid);
 38                 collection.Remove(query);
 39 
 40                 WriteConcernResult result = collection.Insert(info);
 41                 CLog.WriteLog("write:  "+info.ToJson());
 42                 return result.Ok;
 43             }
 44             catch(Exception ex)
 45             {
 46                 CLog.WriteLog(ex.Message+info.ToJson());
 47                 return false;
 48             }
 49         }
 50 
 51         /// <summary>
 52         /// 附近用户
 53         /// </summary>
 54         /// <param name="sex"></param>
 55         /// <param name="longitude"></param>
 56         /// <param name="latitude"></param>
 57         /// <param name="total"></param>
 58         /// <param name="limit"></param>
 59         /// <param name="maxDistance"></param>
 60         /// <returns></returns>
 61         public static List<UserInfo> GetNearbyUser(int myuid,int sex, double longitude, double latitude, ref int total, int limit = 1000, int maxDistance = 50*1000)
 62         {
 63             List<UserInfo> list = null;
 64             try
 65             {
 66                 list = new List<UserInfo>();
 67                 double radius = 6378000;
 68                 MongoCollection<NearInfo> collection = Instance.GetCollection<NearInfo>("userinfo");
 69 
 70                 #region 方法2 计算出了距离
 71                 IMongoQuery query = Query.NE("userid",myuid);
 72                 if (sex ==0 || sex == 1) {
 73                     query =Query.And( Query.NE("sex", 1-sex),Query.NE("userid",myuid));
 74                 }
 75                 GeoNearOptionsBuilder options = GeoNearOptions.SetMaxDistance(maxDistance * 1.0 / radius).SetSpherical(true).SetDistanceMultiplier(radius);
 76                 var result = collection.GeoNear(query, longitude, latitude, limit, options);
 77 
 78                 var response = result.Response;
 79                 foreach (var item in response["results"].AsBsonArray)
 80                 {
 81                     BsonDocument bson = item.AsBsonDocument;
 82                     var dis = bson["dis"].AsDouble;//间隔的距离
 83                     var obj = bson["obj"].AsBsonDocument;
 84                     NearInfo info = BsonSerializer.Deserialize<NearInfo>(obj);
 85                     if (info == null)
 86                         continue;
 87 
 88                     UserInfo tmp = new UserInfo { 
 89                         userid = info.userid,
 90                         dis = dis,
 91                         unick = CUser.GetUserNick(info.userid), 
 92                         headimg = CUser.UserHeadImg(info.userid).Facemiddle,
 93                         usign = Getmemo(info.userid),sex=(info.sex ==1?"":"")
 94                     };
 95                     list.Add(tmp);
 96                     total++;
 97                     //CLog.WriteLog(info.sex.ToString());
 98                 }
 99                 CLog.WriteLog(myuid+"Read:  "+result.Response.ToJson());
100                 #endregion
101                 //CLog.WriteLog(list.ToJson());
102             }
103             catch (Exception ex){
104                 CLog.WriteLog(ex.Message);
105             }
106             return list;
107         }
108 
109         public static string Getmemo(int userid)
110         {
111             string memo = string.Empty;
112             string _tmp = string.Empty;
113             int _tmp1 = 0;
114             CUser.GetUserDetail(userid, out _tmp1, out _tmp, out _tmp1, out _tmp, out _tmp, out memo);
115             return memo;
116         }
117     }

 博客园刚开始用,不知道怎么保留文件...

asp.net的mongodb实例

标签:

原文地址:http://www.cnblogs.com/kant/p/4580900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!