Exemple #1
0
        /// <summary>
        /// 插入单条数据
        /// </summary>
        /// <param name="collName"></param>
        /// <param name="saveDoc"></param>
        /// <returns></returns>
        public InvokeResult Save(string collName, BsonDocument saveDoc)
        {
            InvokeResult result = new InvokeResult()
            {
                Status = Status.Failed
            };

            try
            {
                MongoCollection <BsonDocument> entityColl = _mongoDatabase.GetCollection(collName);

                using (_mongoServer.RequestStart(_mongoDatabase))
                {
                    entityColl.Save(saveDoc); //非安全模式,即无返回消息
                    //SafeModeResult safeResult = entityColl.Save(saveDoc, SafeMode.True);
                    //if (safeResult.HasLastErrorMessage) throw new Exception(safeResult.LastErrorMessage);
                }

                result.Status = Status.Successful;
            }
            catch (Exception ex)
            {
                result.Message = ex.Message;
            }

            return(result);
        }
Exemple #2
0
 public void TestText()
 {
     if (_primary.Supports(FeatureId.TextSearchQuery))
     {
         using (_server.RequestStart(null, _primary))
         {
             var collection = _database.GetCollection <BsonDocument>("test_text");
             collection.Drop();
             collection.CreateIndex(IndexKeys.Text("textfield"));
             collection.Insert(new BsonDocument
             {
                 { "_id", 1 },
                 { "textfield", "The quick brown fox" }
             });
             collection.Insert(new BsonDocument
             {
                 { "_id", 2 },
                 { "textfield", "over the lazy brown dog" }
             });
             var query   = Query.Text("fox");
             var results = collection.Find(query).ToArray();
             Assert.AreEqual(1, results.Length);
             Assert.AreEqual(1, results[0]["_id"].AsInt32);
         }
     }
 }
        public Warehouse Save(string name)
        {
            var       warstoryDocuments = _server.GetDatabase("warstory-documents");
            Warehouse warehouseDocument = null;

            using (_server.RequestStart(warstoryDocuments))
            {
                var warehouseDocuments = warstoryDocuments.GetCollection <Warehouse>("warehouse-documents");
                var query = Query.EQ("_id", name);

                warehouseDocument = warehouseDocuments.FindAs <Warehouse>(query).SingleOrDefault();
                if (warehouseDocument != null)
                {
                    warehouseDocument.Action();
                    warehouseDocuments.Save <Warehouse>(warehouseDocument);
                }
                else
                {
                    warehouseDocument = new Warehouse {
                        Name = "Chavp"
                    };
                    warehouseDocuments.Save <Warehouse>(warehouseDocument);
                }
            }

            return(warehouseDocument);
        }
Exemple #4
0
 private void LlenarGrilla()
 {
     using (Server.RequestStart(Database))
     {
         MongoCollection Contactos = Database.GetCollection <Contact>("contacts");
         dgvEmpleados.DataSource = Contactos.FindAllAs <Contact>().ToList <Contact>();
     }
 }
 public void TestRequestStart()
 {
     Assert.AreEqual(0, _server.RequestNestingLevel);
     using (_server.RequestStart())
     {
         Assert.AreEqual(1, _server.RequestNestingLevel);
     }
     Assert.AreEqual(0, _server.RequestNestingLevel);
 }
 public void RemoveAllPOI(List <OCM.API.Common.Model.ChargePoint> poiList, MongoCollection <POIMongoDB> poiCollection)
 {
     using (server.RequestStart(database))
     {
         foreach (var poi in poiList)
         {
             var query = Query.EQ("ID", poi.ID);
             poiCollection.Remove(query);
         }
     }
 }
Exemple #7
0
        public void GetPerformance()
        {
            using (mServer.RequestStart(mLogs))
            {
                var servicePerformances = mLogs.GetCollection("service_performance");

                var map    = new BsonJavaScript(@"
                function() {                                                                  
                    var key = {};
                    key.class = this.class;
                    key.method = this.method;
                    key.machineName = this.machineName;
                    emit(key, { count: 1 });                                                            
                }");
                var reduce = new BsonJavaScript(@"
                function(key, values) {
                    var result = { count: 0 };
                    values.forEach(function(value){               
                        result.count += value.count;
                    });
                    return result
                }");

                var finalize = new BsonJavaScript(@"
                function(key, value){
                      return value;
                }");

                var options = new MapReduceOptionsBuilder();
                options.SetFinalize(finalize);
                options.SetOutput(MapReduceOutput.Inline);

                var results = servicePerformances.MapReduce(map, reduce, options);

                int totalCal = 0;
                foreach (var result in results.GetResults())
                {
                    var doc   = result.ToBsonDocument();
                    var id    = doc["_id"].AsBsonDocument;
                    var value = doc["value"].AsBsonDocument;
                    totalCal += Convert.ToInt32(value["count"].AsDouble);

                    string className   = id["class"].AsString;
                    string method      = id["method"].AsString;
                    string machineName = id["machineName"].AsString;
                }

                var all = servicePerformances.FindAll().ToList().Count;

                Assert.AreEqual(all, totalCal);
            }
        }
 /// <summary>
 /// Copies a GridFS file.
 /// </summary>
 /// <param name="destFileName">The destination file name.</param>
 /// <param name="createOptions">The create options.</param>
 /// <returns>The file info of the new GridFS file.</returns>
 public MongoGridFSFileInfo CopyTo(string destFileName, MongoGridFSCreateOptions createOptions)
 {
     EnsureServerInstanceIsPrimary();
     using (_server.RequestStart(_serverInstance))
     {
         // note: we are aware that the data is making a round trip from and back to the server
         // but we choose not to use a script to copy the data locally on the server
         // because that would lock the database for too long
         var gridFS = new MongoGridFS(_server, _databaseName, _settings);
         var stream = OpenRead();
         return(gridFS.Upload(stream, destFileName, createOptions));
     }
 }
        IList <BsonDocument> getAllDocuments(string collectionName)
        {
            IList <BsonDocument> docList = new List <BsonDocument>();

            using (_ms.RequestStart(_mdb)) {
                MongoCollection            mc  = _mdb.GetCollection("csharp");
                MongoCursor <BsonDocument> cur = mc.FindAllAs <BsonDocument> ();
                System.Collections.Generic.IEnumerator <BsonDocument> e = cur.GetEnumerator();
                while (e.MoveNext())
                {
                    docList.Add(e.Current);
                }
            }
            return(docList);
        }
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="connectionString"></param>
        /// <param name="databaseName"></param>
        /// <param name="collectionName"></param>
        /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
        /// <returns></returns>
        public static T GetOne <T>(string connectionString, string databaseName, string collectionName, IMongoQuery query)
        {
            MongoServer server = MongoServer.Create(connectionString);

            //获取数据库或者创建数据库(不存在的话)。
            MongoDatabase database = server.GetDatabase(databaseName);

            T result = default(T);

            using (server.RequestStart(database))//开始连接数据库。
            {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);

                if (null == query)
                {
                    result = myCollection.FindOneAs <T>();
                }
                else
                {
                    result = myCollection.FindOneAs <T>(query);
                }
            }

            return(result);
        }
        public static SafeModeResult Delete(string connectionString, string databaseName, string collectionName, string _id)
        {
            SafeModeResult result;
            ObjectId       id;

            if (!ObjectId.TryParse(_id, out id))
            {
                return(null);
            }



            MongoServer server = MongoServer.Create(connectionString);

            //获取数据库或者创建数据库(不存在的话)。
            MongoDatabase database = server.GetDatabase(databaseName);



            using (server.RequestStart(database))//开始连接数据库。
            {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);

                result = myCollection.Remove(Query.EQ("_id", id));
            }

            return(result);
        }
Exemple #12
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="connectionString"></param>
        /// <param name="databaseName"></param>
        /// <param name="collectionName"></param>
        /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
        /// <param name="pagerInfo"></param>
        /// <param name="sortBy">排序用的。调用示例:SortBy.Descending("Title") 或者 SortBy.Descending("Title").Ascending("Author")等等</param>
        /// <param name="fields">只返回所需要的字段的数据。调用示例:"Title" 或者 new string[] { "Title", "Author" }等等</param>
        /// <returns></returns>
        public static List <T> GetAll <T>(string connectionString, string databaseName, string collectionName, IMongoQuery query, PagerInfo pagerInfo, IMongoSortBy sortBy, params string[] fields)
        {
            MongoServer server = MongoServer.Create(connectionString);
            //获取数据库或者创建数据库(不存在的话)。
            MongoDatabase database = server.GetDatabase(databaseName);
            List <T>      result   = new List <T>();

            using (server.RequestStart(database))//开始连接数据库。
            {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);
                MongoCursor <T> myCursor;
                if (null == query)
                {
                    myCursor = myCollection.FindAllAs <T>();
                }
                else
                {
                    myCursor = myCollection.FindAs <T>(query);
                }
                if (null != sortBy)
                {
                    myCursor.SetSortOrder(sortBy);
                }
                if (null != fields)
                {
                    myCursor.SetFields(fields);
                }
                foreach (T entity in myCursor.SetSkip((pagerInfo.Page - 1) * pagerInfo.PageSize).SetLimit(pagerInfo.PageSize))//.SetSkip(100).SetLimit(10)是指读取第一百条后的10条数据。
                {
                    result.Add(entity);
                }
            }
            return(result);
        }
Exemple #13
0
        public void TestUploadAndDownload()
        {
            MongoGridFSFileInfo uploadedFileInfo;

            var text  = "HelloWorld";
            var bytes = Encoding.UTF8.GetBytes(text);

            using (var stream = new MemoryStream(bytes))
            {
                uploadedFileInfo = _database.GridFS.Upload(stream, "HelloWorld.txt");
            }

            // use RequestStart so that if we are running this test against a replica set we will bind to a specific secondary
            using (_server.RequestStart(_database, ReadPreference.SecondaryPreferred))
            {
                // wait for the GridFS file to be replicated before trying to Download it
                var timeoutAt = DateTime.UtcNow.AddSeconds(30);
                while (!_database.GridFS.Exists(Query.EQ("_id", uploadedFileInfo.Id)))
                {
                    if (DateTime.UtcNow >= timeoutAt)
                    {
                        throw new TimeoutException("HelloWorld.txt failed to propagate to secondary");
                    }
                    Thread.Sleep(TimeSpan.FromMilliseconds(1));
                }

                using (var stream = new MemoryStream())
                {
                    _database.GridFS.Download(stream, "HelloWorld.txt");
                    var downloadedBytes = stream.ToArray();
                    var downloadedText  = Encoding.UTF8.GetString(downloadedBytes);
                    Assert.AreEqual("HelloWorld", downloadedText);
                }
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="connectionString"></param>
        /// <param name="databaseName"></param>
        /// <param name="collectionName"></param>
        /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
        /// <returns></returns>
        public static SafeModeResult DeleteAll(string connectionString, string databaseName, string collectionName, IMongoQuery query)
        {
            MongoServer server = MongoServer.Create(connectionString);

            //获取数据库或者创建数据库(不存在的话)。
            MongoDatabase database = server.GetDatabase(databaseName);

            SafeModeResult result;

            using (server.RequestStart(database))//开始连接数据库。
            {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);

                if (null == query)
                {
                    result = myCollection.RemoveAll();
                }
                else
                {
                    result = myCollection.Remove(query);
                }
            }

            return(result);
        }
Exemple #15
0
        private static void InsertGroupPost(MongoServer mongo, MongoDatabase db, SqlCommand cmd)
        {

            cmd.CommandText = "delete from  DoubanPost";

            cmd.ExecuteNonQuery();

            using (mongo.RequestStart(db))
            {
                var collection = db.GetCollection<BsonDocument>("postinfo_collection");

                foreach (var item in collection.FindAll())
                {

                    var list = item.RawValues.ToList();

                    cmd.CommandText = "insert into DoubanPost values (@v1,@v2,@v3)";

                    int v3;
                    if (!int.TryParse(list[3].ToString(), out v3))
                    {
                        v3 = -1;
                    }
                    cmd.Parameters.Clear();
                    cmd.Parameters.AddWithValue("@v1", list[1].ToString());
                    cmd.Parameters.AddWithValue("@v2", list[2].ToString());
                    cmd.Parameters.AddWithValue("@v3", v3);

                    cmd.ExecuteNonQuery();
                }
            }
        }
        public static void CreateIndex(string connectionString, string databaseName, string collectionName, params string[] keyNames)
        {
            SafeModeResult result = new SafeModeResult();

            if (null == keyNames)
            {
                return;
            }

            MongoServer server = MongoServer.Create(connectionString);

            //获取数据库或者创建数据库(不存在的话)。
            MongoDatabase database = server.GetDatabase(databaseName);



            using (server.RequestStart(database))//开始连接数据库。
            {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);
                if (!myCollection.IndexExists(keyNames))
                {
                    myCollection.EnsureIndex(keyNames);
                }
            }
        }
Exemple #17
0
        //TODO: come back and reduce number of reads on DB
        /// <summary>
        /// This method returns all historical orders.
        /// </summary>
        /// <returns>ArrayList of order objects</returns>
        public ArrayList getAllOrders()
        {
            dLog.Info("Entering method getAllOrders");
            ArrayList result = new ArrayList();

            try
            {
                MongoServer   server = MongoServer.Create();
                MongoDatabase db     = server.GetDatabase("neatoBurrito");
                //MongoCredentials credentials = new MongoCredentials("username", "password");
                //MongoDatabase salaries = server.GetDatabase("salaries", credentials);

                using (server.RequestStart(db))
                {
                    MongoCollection <BsonDocument> coll = db.GetCollection("order");

                    MongoCursor cur = coll.FindAll();

                    foreach (var doc in cur)
                    {
                        result.Add(getOrder(((BsonDocument)doc)["id"].AsInt32));
                    }
                }
            }
            catch (Exception e2)
            {
                dLog.Error("Exception in getAllOrders: " + e2.Message);
            }
            finally
            {
                //using statement above already calls RequestDone()
            }

            return(result);
        }
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="connectionString"></param>
        /// <param name="databaseName"></param>
        /// <param name="collectionName"></param>
        /// <param name="query">条件查询。 调用示例:Query.Matches("Title", "感冒") 或者 Query.EQ("Title", "感冒") 或者Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc")) 等等</param>
        /// <param name="update">更新设置。调用示例:Update.Set("Title", "yanc") 或者 Update.Set("Title", "yanc").Set("Author", "yanc2") 等等</param>
        /// <returns></returns>
        public static SafeModeResult UpdateAll <T>(string connectionString, string databaseName, string collectionName, IMongoQuery query, IMongoUpdate update)
        {
            SafeModeResult result;

            if (null == query || null == update)
            {
                return(null);
            }


            MongoServer server = MongoServer.Create(connectionString);

            //获取数据库或者创建数据库(不存在的话)。
            MongoDatabase database = server.GetDatabase(databaseName);



            using (server.RequestStart(database))//开始连接数据库。
            {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);

                result = myCollection.Update(query, update, UpdateFlags.Multi);
            }

            return(result);
        }
Exemple #19
0
        public void TestLastErrorMessage()
        {
            using (_server.RequestStart(_database))
            {
                var c = new C {
                    List = new List <int>()
                };

                // insert it once
                _collection.Insert(c);
                var lastError = _server.GetLastError();
                Assert.AreEqual(0, lastError.DocumentsAffected);
                Assert.IsFalse(lastError.HasLastErrorMessage);
                Assert.IsNull(lastError.LastErrorMessage);
                Assert.IsFalse(lastError.UpdatedExisting);

                // insert it again (expect duplicate key error)
                _collection.Insert(c);
                lastError = _server.GetLastError();
                Assert.AreEqual(0, lastError.DocumentsAffected);
                Assert.IsTrue(lastError.HasLastErrorMessage);
                Assert.IsNotNull(lastError.LastErrorMessage);
                Assert.IsFalse(lastError.UpdatedExisting);
            }
        }
        public static T GetOne <T>(string connectionString, string databaseName, string collectionName, string _id)
        {
            T        result = default(T);
            ObjectId id;

            if (!ObjectId.TryParse(_id, out id))
            {
                return(default(T));
            }

            MongoServer server = MongoServer.Create(connectionString);

            //获取数据库或者创建数据库(不存在的话)。
            MongoDatabase database = server.GetDatabase(databaseName);



            using (server.RequestStart(database))//开始连接数据库。
            {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);


                result = myCollection.FindOneAs <T>(Query.EQ("_id", id));
            }

            return(result);
        }
 public void Dispose()
 {
     if (!_disposed)
     {
         try
         {
             try
             {
                 _request.Dispose();
             }
             finally
             {
                 if (_wasSet)
                 {
                     // use a new request to set the mode off because the original connection could be closed if an error occurred
                     using (_server.RequestStart(_serverInstance))
                     {
                         SetMode("off");
                     }
                 }
             }
         }
         finally
         {
             _disposed = true;
         }
     }
 }
        public static void performOperation()
        {
            MongoClient mc         = new MongoClient("mongodb://aks-osx.local:27017,aks-osx.local:27018,aks-osx.local:27019/?readPreference=primaryPreferred");
            IList       cursorList = new ArrayList();

            long          counter = 0;
            MongoServer   ms      = mc.GetServer();
            MongoDatabase mDb     = ms.GetDatabase("test");

            using (ms.RequestStart(mDb)) {
                while (true)
                {
                    ++counter;
                    try {
                        bool collExists = mDb.CollectionExists("data");
                        var  coll       = mDb.GetCollection("data");
                        long collCount  = coll.Count();
                        if (counter % 100 == 0)
                        {
                            Console.WriteLine("Collection Stats [Thread: " + Thread.CurrentThread.ManagedThreadId
                                              + ", Exists: " + collExists
                                              + ", Count: " + collCount + ", listSize: " + cursorList.Count + "]");
                        }

                        cursorList.Add(coll.FindAll());
                    } catch (Exception ex) {
                        Console.WriteLine("Caught Exception within While Loop: " + ex.StackTrace);
                    }
                }
            }
        }
        // constructors
        public FailPoint(string name, MongoServer server, MongoServerInstance serverInstance)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }
            if (server == null)
            {
                throw new ArgumentNullException("server");
            }
            if (serverInstance == null)
            {
                throw new ArgumentNullException("serverInstance");
            }

            if (server.RequestServerInstance != null)
            {
                throw new InvalidOperationException("FailPoint cannot be used when you are already in a RequestStart.");
            }

            _name           = name;
            _server         = server;
            _serverInstance = serverInstance;
            _adminDatabase  = server.GetDatabase("admin");
            _request        = server.RequestStart(serverInstance);
        }
        /// <summary>
        /// 单实体数据查询
        /// </summary>
        /// <typeparam name="T">泛型对象</typeparam>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="databaseName">数据库名称</param>
        /// <param name="collectionName">集合名称</param>
        /// <param name="query">
        /// 查询条件
        /// <para>调用示例:</para>
        /// <para>  Query.Matches("Title", "感冒")</para>
        /// <para>  Query.EQ("Title", "感冒")</para>
        /// <para>  Query.And(Query.Matches("Title", "感冒"),Query.EQ("Author", "yanc"))</para>
        /// <para></para>
        /// </param>
        /// <returns>泛型对象集合信息</returns>
        public static T Select <T>(string connectionString, string databaseName, string collectionName, IMongoQuery query)
        {
            if (string.IsNullOrEmpty(connectionString) ||
                string.IsNullOrEmpty(databaseName) ||
                string.IsNullOrEmpty(collectionName) ||
                null == query)
            {
                return(default(T));
            }
            MongoServer   server   = MongoServer.Create(connectionString);
            MongoDatabase database = server.GetDatabase(databaseName);
            T             result   = default(T);

            using (server.RequestStart(database)) {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);
                if (null == query)
                {
                    result = myCollection.FindOneAs <T>();
                }
                else
                {
                    result = myCollection.FindOneAs <T>(query);
                }
            }
            return(result);
        }
        /// <summary>
        /// 单实体数据查询
        /// </summary>
        /// <typeparam name="T">泛型对象</typeparam>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="databaseName">数据库名称</param>
        /// <param name="collectionName">集合名称</param>
        /// <param name="_id">系统内置编号</param>
        /// <returns>泛型对象集合信息</returns>
        public static T Select <T>(string connectionString, string databaseName, string collectionName, string _id)
        {
            if (string.IsNullOrEmpty(connectionString) ||
                string.IsNullOrEmpty(databaseName) ||
                string.IsNullOrEmpty(collectionName) ||
                string.IsNullOrEmpty(_id))
            {
                return(default(T));
            }
            T        result = default(T);
            ObjectId id;

            if (!ObjectId.TryParse(_id, out id))
            {
                return(default(T));
            }
            MongoServer   server   = MongoServer.Create(connectionString);
            MongoDatabase database = server.GetDatabase(databaseName);

            using (server.RequestStart(database)) {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);
                result = myCollection.FindOneAs <T>(Query.EQ("_id", id));
            }
            return(result);
        }
Exemple #26
0
        static void Main(string[] args)
        {
            string        connectionString = "mongodb://localhost";
            MongoServer   server           = MongoServer.Create(connectionString);
            MongoDatabase database         = server.GetDatabase("test");

            using (server.RequestStart(database))
            {
                // a series of operations that must be performed on the same connection
            }
        }
        /// <summary>
        /// 分页查询 指定索引最后项-PageSize模式
        /// </summary>
        /// <typeparam name="T">所需查询的数据的实体类型</typeparam>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="databaseName">数据库名称</param>
        /// <param name="collectionName">集合名称</param>
        /// <param name="query">查询的条件 没有可以为null</param>
        /// <param name="indexName">索引名称</param>
        /// <param name="lastKeyValue">最后索引的值</param>
        /// <param name="pageSize">分页大小</param>
        /// <param name="sortType">排序类型 1升序 -1降序 仅仅针对该索引</param>
        /// <param name="fields">字段设置</param>
        /// <returns>返回一个List列表数据</returns>
        public static List <T> Select <T>(string connectionString, string databaseName, string collectionName, IMongoQuery query, string indexName, object lastKeyValue, int pageSize, int sortType, params string[] fields)
        {
            if (string.IsNullOrEmpty(connectionString) ||
                string.IsNullOrEmpty(databaseName) ||
                string.IsNullOrEmpty(collectionName) ||
                string.IsNullOrEmpty(indexName))
            {
                return(null);
            }
            if (pageSize <= 0)
            {
                pageSize = 200;
            }
            MongoServer   server   = MongoServer.Create(connectionString);
            MongoDatabase database = server.GetDatabase(databaseName);
            List <T>      result   = new List <T>();

            using (server.RequestStart(database)) {
                MongoCollection <T> mc       = database.GetCollection <T>(collectionName);
                MongoCursor <T>     myCursor = null;
                //当查询为空时 附加恒真的条件 类似SQL:1=1的语法
                if (null == query)
                {
                    query = Query.Exists("_id");
                }
                if (null != fields)
                {
                    myCursor.SetFields(fields);
                }
                //判断升降序后进行查询
                if (sortType > 0)                   //升序
                {
                    if (lastKeyValue != null)
                    {
                        //有上一个主键的值传进来时才添加上一个主键的值的条件
                        query = Query.And(query, Query.GT(indexName, BsonValue.Create(lastKeyValue)));
                    }
                    //先按条件查询 再排序 再取数
                    myCursor = mc.Find(query).SetSortOrder(new SortByDocument(indexName, 1)).SetLimit(pageSize);
                }
                else                   //降序
                {
                    if (lastKeyValue != null)
                    {
                        query = Query.And(query, Query.LT(indexName, BsonValue.Create(lastKeyValue)));
                    }
                    myCursor = mc.Find(query).SetSortOrder(new SortByDocument(indexName, -1)).SetLimit(pageSize);
                }
                result = myCursor.ToList <T>();
            }
            return(result);
        }
Exemple #28
0
        static void Main(string[] args)
        {
            string[]    lines = System.IO.File.ReadAllLines(@"C:\teste\teste.txt"); //Abre o arquivo
            MongoServer mongo = MongoServer.Create();                               // prepara para a conectar

            mongo.Connect();                                                        // conecta
            var       db = mongo.GetDatabase("mongoTempo");                         //seleciona o DB
            Stopwatch iw = new Stopwatch();                                         // prepara para contar o tempo
            Stopwatch qw = new Stopwatch();                                         // prepara para contar o tempo

            iw.Start();                                                             // inicia a contagem de tempo de inserção
            using (mongo.RequestStart(db))
            {
                var collection = db.GetCollection <BsonDocument>("dados"); //seleciona a tabela
                foreach (string line in lines)                             //loop para percorrer as linhas
                {
                    string[] exploded = line.Split(',');                   //função para separar os dados id, data, dados geograficos
                    if (exploded.Length == 4)
                    {
                        BsonDocument dados = new BsonDocument()                              //preparação das colunas
                                             .Add("_id", exploded[0])                        //prepara a coluna de id
                                             .Add("data", exploded[1])                       //prepara a coluna de data
                                             .Add("local", exploded[2] + ';' + exploded[3]); //prepara a coluna de local

                        collection.Insert(dados);                                            //insere os dados no BD
                    }
                    else
                    {
                        Console.WriteLine(line);
                    }
                }
                iw.Stop();                                            //finaliza a contagem de tempo da incercao
                var query = new QueryDocument("data", "2008");        //variavel que guarda os dados de pesquisa (primeiro dado o nome da coluna, segundo dado o valor de pesquisa
                qw.Start();                                           // inicia a contagem de tempo
                foreach (BsonDocument item in collection.Find(query)) //executa a pesquisa dentro de um foreach para caso ter mais de um resultado ser listado
                {
                    string json = item.ToJson();                      //lista os resultados em formato Json;
                }
                qw.Stop();                                            //finaliza a contagem de tempo da busca
            }



            Console.WriteLine("Insercao no MongoDB completada em: " + (iw.ElapsedTicks / Stopwatch.Frequency) + " (s) e busca feita em: " + (qw.ElapsedTicks / Stopwatch.Frequency) + " (segundos)");// mostra o tempo em segundos


            Console.WriteLine("Insercao no MongoDB completada em: " + (iw.ElapsedTicks * 1000 / Stopwatch.Frequency) + " (ms) e busca feita em: " + (qw.ElapsedTicks * 1000 / Stopwatch.Frequency) + " (ms)"); // mostra o tempo em milisegundos


            System.Console.ReadKey();//não finaliza o programa até precionar uma tecla
        }
Exemple #29
0
        public static SafeModeResult UpdateOne <T>(string connectionString, string databaseName, string collectionName, T entity)
        {
            MongoServer server = MongoServer.Create(connectionString);
            //获取数据库或者创建数据库(不存在的话)。
            MongoDatabase  database = server.GetDatabase(databaseName);
            SafeModeResult result;

            using (server.RequestStart(database))//开始连接数据库。
            {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);
                result = myCollection.Save(entity);
            }
            return(result);
        }
Exemple #30
0
 /// <summary>
 /// gets a document, change him with function and save
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="query"></param>
 /// <param name="collectionName"></param>
 /// <param name="function"></param>
 public void EditDocument <T>(IMongoQuery query, string collectionName, Action <T> function)
 {
     using (_server.RequestStart(_database))
     {
         T doc = this.GetDocument <T>(query, collectionName);
         if (doc == null)
         {
             Log.Error("MongoDBContext.EditDocument", "No document found", query, collectionName);
         }
         else
         {
             function(doc);
             this.SaveDocument <T>(doc, collectionName);
         }
     }
 }
        /// <summary>
        /// 数据删除
        /// <remarks>数据库不存在创建数据库</remarks>
        /// </summary>
        /// <param name="connectionString">数据库连接字符串</param>
        /// <param name="databaseName">数据库名称</param>
        /// <param name="collectionName">集合名称</param>
        /// <param name="keyName">键名称</param>
        /// <param name="keyValue">键值</param>
        /// <returns>安全模式的结果</returns>
        public static SafeModeResult Delete(string connectionString, string databaseName, string collectionName, string keyName, string keyValue)
        {
            if (string.IsNullOrEmpty(keyName) || string.IsNullOrEmpty(keyValue))
            {
                return(null);
            }
            SafeModeResult result;
            MongoServer    server   = MongoServer.Create(connectionString);
            MongoDatabase  database = server.GetDatabase(databaseName);

            using (server.RequestStart(database)) {
                MongoCollection <BsonDocument> myCollection = database.GetCollection <BsonDocument>(collectionName);
                result = myCollection.Remove(Query.EQ(keyName, keyValue));
            }
            return(result);
        }
        // constructors
        public FailPoint(string name, MongoServer server, MongoServerInstance serverInstance)
        {
            if (name == null) { throw new ArgumentNullException("name"); }
            if (server == null) { throw new ArgumentNullException("server"); }
            if (serverInstance == null) { throw new ArgumentNullException("serverInstance"); }

            if (server.RequestConnection != null)
            {
                throw new InvalidOperationException("FailPoint cannot be used when you are already in a RequestStart.");
            }

            _name = name;
            _server = server;
            _serverInstance = serverInstance;
            _adminDatabase = server.GetDatabase("admin");
            _request = server.RequestStart(_adminDatabase, serverInstance);
        }