publicHisGpsDataQR GetMongo(HisGpsDataParam param)
{
HisGpsDataQR res= newHisGpsDataQR();
res.GUID= this.Request.RequestUri.ParseQueryString()["GUID"];string s = ConfigurationManager.AppSettings["mongo_port"].Trim();int port =Convert.ToInt32(s);
s= ConfigurationManager.AppSettings["mongo_ip"].Trim();string host =s;//s = ConfigurationManager.AppSettings["mongo_user"].Trim();//string user = s;//s = ConfigurationManager.AppSettings["mongo_pwd"].Trim();//string pwd = s;//MongoDB连接串,以[mongodb://]开头。//string connectionString = "mongodb://" + user + ":" + pwd + "@" + host + ":" + port;
string connectionString = "mongodb://" + host + ":" +port;//连接到一个MongoServer上
MongoServer server =MongoServer.Create(connectionString);//-------------------------------------------------------------------------//打开数据库
MongoDatabase db = server.GetDatabase("xxx");//获取集合
MongoCollection collection = db.GetCollection("xx");//组合查询语句,采用官方查询 因为要判断是否不显示普通定位数据,故不采用此方法//query = Query.And(Query.EQ("DEV_ID", param.dev_id), Query.GTE("LTIME", stime), Query.LTE("LTIME", etime));
var sdt =Convert.ToDateTime(param.stime);var edt =Convert.ToDateTime(param.etime);var stime =ConvertDateTimeToLong(sdt);var etime =ConvertDateTimeToLong(edt);//组合查询
QueryDocument query = newQueryDocument();//设备ID等于xxx
query.Add("DEV_ID", param.dev_id);//GPS时间>=stime,<=etime
BsonDocument bd1 = newBsonDocument();
bd1.Add("$gte", stime);
bd1.Add("$lte", etime);
query.Add("LTIME", bd1);//如果不查询普通定位数据,过滤isstation>0
if (param.showgpsdata == 0)
{
BsonDocument bd2= newBsonDocument();
bd2.Add("$gt", 0);
query.Add("ISSTATION", bd2);
}//指定字段,不返回_id和LTIME字段
FieldsDocument fd = newFieldsDocument();
fd.Add("_id", 0);
fd.Add("LTIME", 0);//log4net.ILog log = log4net.LogManager.GetLogger("Mongodb");//log.Info(query.ToString());
MongoCursor cur= collection.FindAs(query).SetFields(fd);long num =cur.Count();//Console.WriteLine(cur.Count());//遍历结果
List lst = new List();foreach (object item incur)
{//mongo结果转string(mongo结果为json格式)
string json =item.ToString();//json转实体类
HisGpsData obj = DeserializeJsonToObjectss(json);//实体类添加到结果列表
lst.Add(obj);
}
res.Content= newHisGpsDataQRContent()
{
Records=lst
};
res.Content.TotalCount= (int)num; //记录数
res.Status = (int)RespondingOK.OK;returnres;
}