C# mongodb 查询示例

public HisGpsDataQR GetMongo(HisGpsDataParam param)
        {
            HisGpsDataQR res = new HisGpsDataQR();
            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 = new QueryDocument();

            //设备ID等于xxx
            query.Add("DEV_ID", param.dev_id);

            //GPS时间>=stime,<=etime
            BsonDocument bd1 = new BsonDocument();
            bd1.Add("$gte", stime);
            bd1.Add("$lte", etime);
            query.Add("LTIME", bd1);

            //如果不查询普通定位数据,过滤isstation>0
            if (param.showgpsdata == 0)
            {
                BsonDocument bd2 = new BsonDocument();
                bd2.Add("$gt", 0);
                query.Add("ISSTATION", bd2);
            } 

            //指定字段,不返回_id和LTIME字段 
            FieldsDocument fd = new FieldsDocument();
            fd.Add("_id", 0);
            fd.Add("LTIME", 0); 

            //log4net.ILog log = log4net.LogManager.GetLogger("Mongodb");
            //log.Info(query.ToString());

            MongoCursor cur = collection.FindAs<BsonDocument>(query).SetFields(fd);
            long num = cur.Count();
            //Console.WriteLine(cur.Count());

            //  遍历结果 
            List<HisGpsData> lst = new List<HisGpsData>();
            foreach (object item in cur)
            {                
                //mongo结果转string(mongo结果为json格式)
                string json = item.ToString();
                
                //json转实体类
                HisGpsData obj = DeserializeJsonToObjectss<HisGpsData>(json);

                //实体类添加到结果列表
                lst.Add(obj); 
            }
            res.Content = new HisGpsDataQRContent()
            {
                Records = lst 
            };

            res.Content.TotalCount = (int)num; //记录数
            res.Status = (int)RespondingOK.OK;

            return res;
        }

 

posted @ 2020-05-27 11:41  都是城市惹的祸  阅读(332)  评论(0)    收藏  举报