Пример #1
0
        public List <T> List(int pageIndex, int pageSize, Expression <Func <T, bool> > func, out int pageCount)
        {
            pageCount = 0;
            pageCount = Convert.ToInt32(mongoCollection.Count());
            var personList = mongoCollection.Linq().Where(func).Skip(pageSize * (pageIndex - 1))
                             .Take(pageSize).Select(i => i).ToList();

            mongo.Disconnect();
            return(personList);
        }
Пример #2
0
        public static List <PRICERANGE> GetPriceRanges()
        {
            List <PRICERANGE> retval = new List <PRICERANGE>();

            using (Mongo mongo = new Mongo(config.BuildConfiguration()))
            {
                mongo.Connect();
                var db = mongo.GetDatabase(VehicleRecords.VEHICLE_DB.DataBaseName);

                IMongoCollection <Document> collPriceRange = db.GetCollection <Document>(PRICERANGE.TableName);

                Document qRanges = new Document();
                qRanges["DISPLAY_THIS_RANGE"] = "YES";

                PRICERANGE[] foundranges = PRICERANGE.GetPRICERANGEsFromQueryDocument(collPriceRange, qRanges);

                if (foundranges != null && foundranges.Count <PRICERANGE>() > 0)
                {
                    foreach (PRICERANGE range in foundranges.OrderBy(range => range.DISPLAYORDER))
                    {
                        retval.Add(range);
                    }
                }
                mongo.Disconnect();
            }

            return(retval);
        }
Пример #3
0
        public static List <string> GetModelsForMake(string Make)
        {
            List <string> retval = new List <string>();

            using (Mongo mongo = new Mongo(config.BuildConfiguration()))
            {
                mongo.Connect();
                var db = mongo.GetDatabase(VehicleRecords.VEHICLE_DB.DataBaseName);

                IMongoCollection <Document> collVehicles = db.GetCollection <Document>(VEHICLE.TableName);

                Document qVehicles = new Document();
                qVehicles["MAKE"]           = Make;
                qVehicles["STILL_FOR_SALE"] = "YES";

                VEHICLE[] foundvehicles = VEHICLE.GetVEHICLEsFromQueryDocument(collVehicles, qVehicles);

                if (foundvehicles != null && foundvehicles.Count <VEHICLE>() > 0)
                {
                    var result = foundvehicles.GroupBy(vehicles => vehicles.MODEL.ToUpper())
                                 .Select(grp => grp.First())
                                 .ToList();
                    foreach (VEHICLE ModelExample in result.OrderBy(c => c.MODEL))
                    {
                        retval.Add(ModelExample.MODEL);
                    }
                }
                mongo.Disconnect();
            }

            return(retval);
        }
Пример #4
0
        /// <summary>
        /// 获取一个集合下所有数据
        /// </summary>
        /// <param name="collectionName"></param>
        /// <returns></returns>
        public static List <T> GetAllByField <T>(string collectionName, Document fields) where T : class
        {
            List <T> result = new List <T>();

            using (Mongo mongo = new Mongo(connectionString))
            {
                mongo.Connect();
                IMongoDatabase       friends    = mongo.GetDatabase(database);
                IMongoCollection <T> collection = friends.GetCollection <T>(collectionName);
                if (fields == null)
                {
                    foreach (T entity in collection.FindAll().Documents)
                    {
                        result.Add(entity);
                    }
                }
                else
                {
                    foreach (T entity in collection.Find(null, fields).Documents)
                    {
                        result.Add(entity);
                    }
                }
                mongo.Disconnect();
            }
            return(result);
        }
Пример #5
0
        public static List <VEHICLE> GetAllUnsoldVehiclesForDealer(string DealershipName)
        {
            List <VEHICLE> retval = null;

            using (Mongo mongo = new Mongo(config.BuildConfiguration()))
            {
                mongo.Connect();
                var db = mongo.GetDatabase(VehicleRecords.VEHICLE_DB.DataBaseName);

                IMongoCollection <Document> collVehicles = db.GetCollection <Document>(VEHICLE.TableName);

                Document qDealer = new Document();
                qDealer["DEALERSHIP_NAME"] = DealershipName;
                qDealer["STILL_FOR_SALE"]  = "YES";

                VEHICLE[] foundvehicles = VEHICLE.GetVEHICLEsFromQueryDocument(collVehicles, qDealer);

                if (foundvehicles != null && foundvehicles.Count <VEHICLE>() > 0)
                {
                    retval = foundvehicles.ToList <VEHICLE>();
                }
                mongo.Disconnect();
            }

            return(retval);
        }
Пример #6
0
        public static int InsertImageFromFile(string filename, string contenttype)
        {
            int counter = 0;

            Image img = Image.FromFile(filename);

            byte[] ImageData = imgToByteArray(img);

            using (Mongo mongo = new Mongo(config.BuildConfiguration()))
            {
                mongo.Connect();
                var db = mongo.GetDatabase(VehicleRecords.VEHICLE_DB.DataBaseName);
                IMongoCollection <Document> collImage;
                collImage = db.GetCollection <Document>(IMAGE.TableName);

                var cursor = collImage.FindAll();

                if (cursor.Documents.Count() > 0)
                {
                    counter = cursor.Documents.Count();
                }

                IMAGE pic = new IMAGE();
                pic.ContentType = contenttype;
                pic.ImageData   = ImageData;
                pic.ImageId     = counter;
                pic.ImageName   = Path.GetFileName(filename);
                pic.TimesServed = 0;
                IMAGE.InsertDocumentFromMEMBER(collImage, pic);
                mongo.Disconnect();
            }

            img = null;
            return(counter);
        }
Пример #7
0
        public static List <DEALERSHIP> GetDealerships(string ParserType)
        {
            List <DEALERSHIP> retval = null;

            using (Mongo mongo = new Mongo(config.BuildConfiguration()))
            {
                mongo.Connect();
                var db = mongo.GetDatabase(VehicleRecords.VEHICLE_DB.DataBaseName);

                IMongoCollection <Document> collDealers = db.GetCollection <Document>(DEALERSHIP.TableName);

                Document qDealer = new Document();
                qDealer["PARSER_TYPE"]  = ParserType;
                qDealer["COLLECT_DATA"] = "YES";

                DEALERSHIP[] founddealers = DEALERSHIP.GetDEALERSHIPsFromQueryDocument(collDealers, qDealer);

                if (founddealers != null && founddealers.Count <DEALERSHIP>() > 0)
                {
                    retval = founddealers.ToList <DEALERSHIP>();
                }
                mongo.Disconnect();
            }

            return(retval);
        }
Пример #8
0
 /// <summary>
 /// IDisposabl 接口的实现 用于释放资源
 /// </summary>
 public void Dispose()
 {
     mongo.Disconnect();
     if (mongo != null)
     {
         mongo.Dispose();
     }
 }
Пример #9
0
        public IQueryable <TEntity> GetModel()
        {
            try
            {
                //mongoSelect.TryConnect();

                var db = mongoSelect.GetDatabase(databaseName);

                var collection = db.GetCollection <TEntity>(collectionName);

                return(collection.Linq());
            }
            catch (Exception ex)
            {
                mongoSelect.Disconnect();
                throw ex;
            }
        }
Пример #10
0
 /// <summary>
 /// Отключаемся от БД
 /// </summary>
 /// <returns></returns>
 private static bool DisconnectWithMongo()
 {
     try
     {
         db.Disconnect();
         return(true);
     }
     catch (Exception) { return(false); }
 }
Пример #11
0
 /// <summary>
 /// 插入多个数据
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="collectionName"></param>
 /// <param name="entiry"></param>
 public static void InsertAll <T>(string collectionName, IEnumerable <T> entity) where T : class
 {
     using (Mongo mongo = new Mongo(connectionString))
     {
         mongo.Connect();
         IMongoDatabase       friends    = mongo.GetDatabase(database);
         IMongoCollection <T> collection = friends.GetCollection <T>(collectionName);
         collection.Insert(entity, true);
         mongo.Disconnect();
     }
 }
Пример #12
0
 /// <summary>
 /// 更新操作
 /// </summary>
 /// <typeparam name="T">类型</typeparam>
 /// <param name="collectionName">表名</param>
 /// <param name="query">条件</param>
 /// <param name="entry">新实体</param>
 public static void Update <T>(string collectionName, Document entity, Document query) where T : class
 {
     using (Mongo mongo = new Mongo(connectionString))
     {
         mongo.Connect();
         IMongoDatabase       friends    = mongo.GetDatabase(database);
         IMongoCollection <T> collection = friends.GetCollection <T>(collectionName);
         collection.Update(entity, query, true);
         mongo.Disconnect();
     }
 }
Пример #13
0
        public void Dispose()
        {
            if (_cursor != null)
            {
                _cursor.Dispose();
            }

            if (_db != null)
            {
                _db.Disconnect();
            }
        }
Пример #14
0
        public static void InsertVehicle(VEHICLE veh)
        {
            using (Mongo mongo = new Mongo(config.BuildConfiguration()))
            {
                mongo.Connect();
                var db = mongo.GetDatabase(VehicleRecords.VEHICLE_DB.DataBaseName);
                IMongoCollection <Document> collVehicle;
                collVehicle = db.GetCollection <Document>(VEHICLE.TableName);

                VEHICLE.InsertDocumentFromMEMBER(collVehicle, veh);
                mongo.Disconnect();
            }
        }
Пример #15
0
        /// <summary>
        /// 获取一条数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="collectionName"></param>
        /// <param name="query"></param>
        /// <returns></returns>
        public static T GetOne <T>(string collectionName, Document query) where T : class
        {
            T result = default(T);

            using (Mongo mongo = new Mongo(connectionString))
            {
                mongo.Connect();
                IMongoDatabase       friends    = mongo.GetDatabase(database);
                IMongoCollection <T> collection = friends.GetCollection <T>(collectionName);
                result = collection.FindOne(query);
                mongo.Disconnect();
            }
            return(result);
        }
Пример #16
0
        /// <summary>
        /// 获取一条数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="collectionName"></param>
        /// <param name="query"></param>
        /// <returns></returns>
        public static T GetFirst <T>(string collectionName, Document query, Document fields) where T : class
        {
            T result = default(T);

            using (Mongo mongo = new Mongo(connectionString))
            {
                mongo.Connect();
                IMongoDatabase       friends    = mongo.GetDatabase(database);
                IMongoCollection <T> collection = friends.GetCollection <T>(collectionName);
                result = collection.Find(query, fields).Skip(0).Limit(1).Documents.First();
                mongo.Disconnect();
            }
            return(result);
        }
Пример #17
0
        public static void Update <T>(Expression <Func <T, bool> > finder, Action <T> updater) where T : class
        {
            if (finder is null)
            {
                throw new ArgumentNullException(nameof(finder));
            }

            if (updater is null)
            {
                throw new ArgumentNullException(nameof(updater));
            }

            var configuration = GetConfiguration <T>();

            using (var mongo = new Mongo(configuration))
            {
                try
                {
                    mongo.Connect();

                    var database   = mongo.GetDatabase(Resources.DatabaseName);
                    var collection = database.GetCollection <T>(typeof(T).Name);
                    var entity     = finder is null?collection.Linq().FirstOrDefault() : collection.Linq().FirstOrDefault(finder);

                    updater.Invoke(entity);
                    collection.Update <T>(entity, finder, true);
                    mongo.Disconnect();
                }

                catch (Exception)
                {
                    mongo.Disconnect();
                    throw;
                }
            }
        }
Пример #18
0
        public static List <VEHICLE> GetVehiclesByMarketMakeModel(string market, string make, string model, string pricerange)
        {
            List <VEHICLE> retval = null;

            using (Mongo mongo = new Mongo(config.BuildConfiguration()))
            {
                mongo.Connect();
                var db = mongo.GetDatabase(VehicleRecords.VEHICLE_DB.DataBaseName);

                IMongoCollection <Document> collPriceRange = db.GetCollection <Document>(PRICERANGE.TableName);
                Document qPriceRange = new Document();
                qPriceRange["VALUENAME"] = pricerange;

                Document   docPriceRange = collPriceRange.FindOne(qPriceRange);
                PRICERANGE pr            = PRICERANGE.GetPRICERANGEFromDocument(docPriceRange);

                IMongoCollection <Document> collVehicles = db.GetCollection <Document>(VEHICLE.TableName);

                Document qVehicles = new Document();
                qVehicles["MARKET"] = market;

                if (make.Length > 0 && make != "All")
                {
                    qVehicles["MAKE"] = make;
                }

                if (model.Length > 0 && model != "All")
                {
                    qVehicles["MODEL"] = model;
                }

                qVehicles["STILL_FOR_SALE"] = "YES";

                string where = $"(this.CURRENT_PRICE >= {pr.LOWBOUND} && this.CURRENT_PRICE <= {pr.HIGHBOUND})";
                qVehicles.Add("$where", new Code(where));

                VEHICLE[] foundvehicles = VEHICLE.GetVEHICLEsFromQueryDocument(collVehicles, qVehicles);

                if (foundvehicles != null && foundvehicles.Count <VEHICLE>() > 0)
                {
                    retval = foundvehicles.ToList <VEHICLE>();
                }
                mongo.Disconnect();
            }

            return(retval);
        }
Пример #19
0
        public static void UpdateVehicleRecord(VEHICLE veh)
        {
            using (Mongo mongo = new Mongo(config.BuildConfiguration()))
            {
                mongo.Connect();
                var db = mongo.GetDatabase(VehicleRecords.VEHICLE_DB.DataBaseName);
                IMongoCollection <Document> collVehicles;
                collVehicles = db.GetCollection <Document>(VEHICLE.TableName);

                Document qVeh = new Document();
                qVeh["VIN"] = veh.VIN;

                collVehicles.Remove(qVeh);
                VEHICLE.InsertDocumentFromMEMBER(collVehicles, veh);
                mongo.Disconnect();
            }
        }
Пример #20
0
        /// <summary>
        /// 获取列表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="collectionName"></param>
        /// <param name="query"></param>
        /// <param name="fields"></param>
        /// <param name="sort"></param>
        /// <param name="pageindex"></param>
        /// <param name="pagesize"></param>
        /// <returns></returns>
        public static List <T> GetList <T>(string collectionName, object query, object fields, Document sort, int pageindex, int pagesize) where T : class
        {
            List <T> result = new List <T>();

            using (Mongo mongo = new Mongo(connectionString))
            {
                mongo.Connect();
                IMongoDatabase       friends    = mongo.GetDatabase(database);
                IMongoCollection <T> collection = friends.GetCollection <T>(collectionName);
                foreach (T entity in collection.Find(query, fields).Sort(sort).Skip((pageindex - 1) * pagesize).Limit(pagesize).Documents)
                {
                    result.Add(entity);
                }
                mongo.Disconnect();
            }
            return(result);
        }
Пример #21
0
        /// <summary>
        /// 获取一个通过查询条件的集合下所有数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="collectionName"></param>
        /// <param name="query"></param>
        /// <returns></returns>
        public static List <T> GetList <T>(string collectionName, object query) where T : class
        {
            List <T> result = new List <T>();

            using (Mongo mongo = new Mongo(connectionString))
            {
                mongo.Connect();
                IMongoDatabase       friends    = mongo.GetDatabase(database);
                IMongoCollection <T> collection = friends.GetCollection <T>(collectionName);
                foreach (T entity in collection.Find(query).Documents)
                {
                    result.Add(entity);
                }
                mongo.Disconnect();
            }
            return(result);
        }
Пример #22
0
        public void TestCode()
        {
            //链接字符串
            string connectionString = "mongodb://localhost";

            //数据库名
            string databaseName = "myDatabase";

            //集合名
            string collectionName = "myCollection";

            //定义Mongo服务
            Mongo mongo = new Mongo(connectionString);

            //获取databaseName对应的数据库,不存在则自动创建
            MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase;

            //获取collectionName对应的集合,不存在则自动创建
            MongoCollection <T> mongoCollection = mongoDatabase.GetCollection <T>(collectionName) as MongoCollection <T>;

            //链接数据库
            mongo.Connect();
            try
            {
                //定义一个文档对象,存入两个键值对
                T doc = new T();
                doc["ID"]  = 1;
                doc["Msg"] = "Hello World!";

                //将这个文档对象插入集合
                mongoCollection.Insert(doc);

                //在集合中查找键值对为ID=1的文档对象
                T docFind = mongoCollection.FindOne(new T {
                    { "ID", 1 }
                });

                //输出查找到的文档对象中键“Msg”对应的值,并输出
                Console.WriteLine(Convert.ToString(docFind["Msg"]));
            }
            finally
            {
                //关闭链接
                mongo.Disconnect();
            }
        }
Пример #23
0
        public void Run()
        {
            var category = categories.FindOne(new Document {
                { "name", "Bluez" }
            });

            Console.WriteLine("The id findOne" + category["_id"]);

            var selector = new Document {
                { "_id", category["_id"] }
            };

            category["name"] = "Bluess";
            //The following will do the same thing.
            categories.Save(category);

            Console.WriteLine("Category after one update " + categories.FindOne(selector));

            category["name"] = "Blues";
            categories.Update(category, selector);

            Console.WriteLine("Category after two updates " + categories.FindOne(selector));

            //Find it by _id that has been converted to a string now.
            var id = (category["_id"]).ToString();

            Console.WriteLine("Found by string id converted back to Oid");
            Console.WriteLine(categories.FindOne(new Document {
                { "_id", id.ToOid() }
            }));

            //Find(new Document()) is equivalent to FindAll();
            //Specifying the cursor in a using block will close it on the server if we decide not
            //to iterate through the whole thing.
            using (var all = categories.Find(new Document()))
            {
                foreach (var doc in all.Documents)
                {
                    Console.WriteLine(doc.ToString());
                }
            }

            mongo.Disconnect();
        }
Пример #24
0
        private void button4_Click(object sender, EventArgs e)
        {
            //链接字符串
            string connectionString = "mongodb://localhost";
            //数据库名
            string databaseName = "myDatabase";
            //集合名
            string collectionName = "myCollection";
            //定义Mongo服务
            Mongo mongo = new Mongo(connectionString);
            //获取databaseName对应的数据库,不存在则自动创建
            MongoDatabase mongoDatabase = mongo.GetDatabase(databaseName) as MongoDatabase;
            //获取collectionName对应的集合,不存在则自动创建
            MongoCollection <Document> mongoCollection = mongoDatabase.GetCollection <Document>(collectionName) as MongoCollection <Document>;

            //链接数据库
            mongo.Connect();
            try
            {
                //定义一个文档对象,存入两个键值对
                Document doc = new Document();
                doc["ID"]  = 1;
                doc["Msg"] = "Hello World!";

                //将这个文档对象插入集合
                mongoCollection.Insert(doc);

                //在集合中查找键值对为ID=1的文档对象
                Document docFind = mongoCollection.FindOne(new Document {
                    { "ID", 1 }
                });

                //输出查找到的文档对象中键“Msg”对应的值,并输出
                //Console.WriteLine(Convert.ToString(docFind["Msg"]));
                MessageBox.Show(Convert.ToString(docFind["Msg"]));
            }
            finally
            {
                //关闭链接
                mongo.Disconnect();
            }
        }
Пример #25
0
        /// <summary>
        /// 获取数据表总行数
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="query"></param>
        /// <param name="collectionName"></param>
        /// <returns></returns>
        public static long GetCount <T>(string collectionName, object query) where T : class
        {
            long count = 0;

            using (Mongo mongo = new Mongo(connectionString))
            {
                mongo.Connect();
                IMongoDatabase       friends    = mongo.GetDatabase(database);
                IMongoCollection <T> collection = friends.GetCollection <T>(collectionName);
                if (query == null)
                {
                    count = collection.Count();
                }
                else
                {
                    count = collection.Count(query);
                }
                mongo.Disconnect();
                return(count);
            }
        }
Пример #26
0
        public static Document FindOne(string mongoConnsring, string mongoDbName, string mongoCollectionName, object spec)
        {
            using (Mongo mongo = new Mongo(mongoConnsring))
            {
                //获取databaseName对应的数据库,不存在则自动创建
                MongoDatabase mongoDatabase = mongo.GetDatabase(mongoDbName) as MongoDatabase;

                //获取collectionName对应的集合,不存在则自动创建
                MongoCollection <Document> mongoCollection = mongoDatabase.GetCollection <Document>(mongoCollectionName) as MongoCollection <Document>;

                //链接数据库
                mongo.Connect();

                ////在集合中查找键值对为ID=1的文档对象
                Document docFind = mongoCollection.FindOne(spec);

                mongo.Disconnect();

                return(docFind);
            }
        }
Пример #27
0
        /// 通用数据查询方法
        /// <summary>
        /// 通用数据查询方法
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="collection_name"></param>
        /// <returns></returns>
        public List <T> QueryCommonData <T>(string collection_name) where T : class
        {
            List <T> list = new List <T>();

            using (Mongo mongo = new Mongo(strconn))
            {
                try
                {
                    mongo.Connect();
                    MongoDatabase db = mongo.GetDatabase(dbName) as MongoDatabase;
                    list = (from item in db.GetCollection <T>(collection_name).Linq()
                            select item).ToList();
                }
                catch (Exception ex)
                {
                    Loger.Log4Net.Error("[****MongoDB****][QueryCommonData] 异常", ex);
                }
                finally
                {
                    mongo.Disconnect();
                }
            }
            return(list);
        }
Пример #28
0
 public void Close()
 {
     factory.Disconnect();
     factory.Dispose();
 }
Пример #29
0
        public static void Main(string[] args)
        {
            var config = new MongoConfigurationBuilder();

            // COMMENT OUT FROM HERE
            config.Mapping(mapping =>
            {
                mapping.DefaultProfile(profile =>
                {
                    profile.SubClassesAre(t => t.IsSubclassOf(typeof(MyClass)));
                });
                mapping.Map <MyClass>();
                mapping.Map <SubClass>();
            });
            // TO HERE

            config.ConnectionString("Server=127.0.0.1");

            using (Mongo mongo = new Mongo(config.BuildConfiguration()))
            {
                mongo.Connect();
                try
                {
                    var db         = mongo.GetDatabase("TestDb");
                    var collection = db.GetCollection <MyClass>();

                    MyClass square = new MyClass()
                    {
                        Corners = 4,
                        Name    = "Square"
                    };

                    MyClass circle = new MyClass()
                    {
                        Corners = 0,
                        Name    = "Circle"
                    };

                    SubClass sub = new SubClass()
                    {
                        Name    = "SubClass",
                        Corners = 6,
                        Ratio   = 3.43
                    };

                    collection.Save(square);
                    collection.Save(circle);
                    collection.Save(sub);

                    var superclass = (from item in db.GetCollection <MyClass>("MyClass").Linq()
                                      where item.Corners > 1
                                      select item.Corners).ToList();

                    var subclass = (from item in db.GetCollection <SubClass>("MyClass").Linq()
                                    where item.Ratio > 1
                                    select item.Corners).ToList();

                    Console.WriteLine("Count by LINQ on typed collection: {0}", collection.Linq().Count(x => x.Corners > 1));
                    Console.WriteLine("Count by LINQ on typed collection2: {0}", db.GetCollection <SubClass>().Linq().Count(x => x.Corners > 1));
                    //Console.WriteLine("Count by LINQ on typed collection3: {0}", db.GetCollection<SubClass>().Count(new { Corners = Op.GreaterThan(1) }));
                    Console.WriteLine("Count on typed collection: {0}", collection.Count(new { Corners = Op.GreaterThan(1) }));

                    var coll  = db.GetCollection("MyClass");
                    var count = coll.Count(new Document("Corners", Op.GreaterThan(1)));
                    Console.WriteLine("Count: {0}", count);
                    Console.ReadKey();
                }
                finally
                {
                    mongo.Disconnect();
                }
            }

            //var main = new MainClass();
            //main.Setup();
            //main.Run();
        }
Пример #30
0
 public void TestCleanup()
 {
     Mongo.Disconnect();
 }