示例#1
0
 private void GroupItem_Load(object sender, EventArgs e)
 {
     foreach (var item in AggregationHelper.GetGroupfunction())
     {
         cmbGroupFunction.Items.Add(item);
     }
     cmbGroupFunction.Items.Add("==========");
     if (RuntimeMongoDbContext.GetCurrentCollection() != null)
     {
         cmbGroupValue.Items.Add("1");
         foreach (var item in MongoHelper.GetCollectionSchame(RuntimeMongoDbContext.GetCurrentCollection()))
         {
             cmbGroupFunction.Items.Add("$" + item);
             cmbGroupValue.Items.Add("$" + item);
         }
     }
 }
示例#2
0
 /// <summary>
 ///     删除索引
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void cmdDelIndex_Click(object sender, EventArgs e)
 {
     if (lstIndex.CheckedItems.Count <= 0)
     {
         return;
     }
     if (lstIndex.CheckedItems[0].Index == 0)
     {
         MessageBox.Show("Can't Delete Default Index!");
         return;
     }
     foreach (ListViewItem item in lstIndex.CheckedItems)
     {
         Operater.DropMongoIndex(item.SubItems[0].Text, RuntimeMongoDbContext.GetCurrentCollection());
     }
     RefreshList();
 }
示例#3
0
 /// <summary>
 ///     加载
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void ctlMatchItem_Load(object sender, EventArgs e)
 {
     foreach (var item in AggregationHelper.GetComparisonfunction())
     {
         cmbComparisonfunction.Items.Add(item);
     }
     if (RuntimeMongoDbContext.GetCurrentCollection() != null)
     {
         foreach (
             var item in
             MongoHelper.GetCollectionSchame(RuntimeMongoDbContext.GetCurrentCollection())
             )
         {
             cmbField.Items.Add(item);
         }
     }
 }
示例#4
0
 /// <summary>
 ///     确定
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void cmdOK_Click(object sender, EventArgs e)
 {
     // 设置DataFilter
     if (string.IsNullOrEmpty(txtSql.Text))
     {
         //No Sql
         SetCurrentDataFilter();
     }
     else
     {
         SetCurrentDataFilter();
         _currentDataViewInfo.MDataFilter = SqlHelper.ConvertQuerySql(txtSql.Text,
                                                                      RuntimeMongoDbContext.GetCurrentCollection());
     }
     //按下OK,不论是否做更改都认为True
     _currentDataViewInfo.IsUseFilter = true;
     Close();
 }
示例#5
0
 /// <summary>
 ///     设置DataFilter
 /// </summary>
 private void SetCurrentDataFilter()
 {
     //清除以前的结果和内部变量,重要!
     //FieldList 和 FieldPicker 是引用关系,所以这里Clear掉之后FieldPicker也会被清除掉。GetQueryFieldList就会始终为空!
     _currentDataViewInfo.MDataFilter.QueryConditionList.Clear();
     _currentDataViewInfo.MDataFilter.DbName         = RuntimeMongoDbContext.GetCurrentDataBase().Name;
     _currentDataViewInfo.MDataFilter.CollectionName = RuntimeMongoDbContext.GetCurrentCollection().Name;
     _currentDataViewInfo.MDataFilter.QueryFieldList = QueryFieldPicker.GetQueryFieldList();
     ConditionPan.SetCurrDataFilter(_currentDataViewInfo);
     if (RuntimeMongoDbContext.CollectionFilter.ContainsKey(RuntimeMongoDbContext.GetCurrentCollectionName()))
     {
         RuntimeMongoDbContext.CollectionFilter[RuntimeMongoDbContext.GetCurrentCollectionName()] = _currentDataViewInfo.MDataFilter;
     }
     else
     {
         RuntimeMongoDbContext.CollectionFilter.Add(RuntimeMongoDbContext.GetCurrentCollectionName(), _currentDataViewInfo.MDataFilter);
     }
 }
示例#6
0
        private void frmStatus_Load(object sender, EventArgs e)
        {
            var strType   = RuntimeMongoDbContext.SelectTagType;
            var docStatus = new BsonDocument();

            switch (strType)
            {
            case ConstMgr.ServerTag:
            case ConstMgr.SingleDbServerTag:
                if (RuntimeMongoDbContext.GetCurrentServerConfig().LoginAsAdmin)
                {
                    docStatus =
                        CommandExecute.ExecuteMongoSvrCommand(DataBaseCommand.ServerStatusCommand,
                                                              RuntimeMongoDbContext.GetCurrentServer()).Response;
                    trvStatus.Height = trvStatus.Height * 2;
                }
                break;

            case ConstMgr.DatabaseTag:
            case ConstMgr.SingleDatabaseTag:
                docStatus = RuntimeMongoDbContext.GetCurrentDataBase().GetStats().Response.ToBsonDocument();
                break;

            case ConstMgr.CollectionTag:
                //TODO:这里无法看到Collection的Document Validation信息。
                docStatus = RuntimeMongoDbContext.GetCurrentCollection().GetStats().Response.ToBsonDocument();

                break;

            default:
                if (RuntimeMongoDbContext.GetCurrentServerConfig().LoginAsAdmin)
                {
                    docStatus =
                        CommandExecute.ExecuteMongoSvrCommand(DataBaseCommand.ServerStatusCommand,
                                                              RuntimeMongoDbContext.GetCurrentServer()).Response;
                    trvStatus.Height = trvStatus.Height * 2;
                }
                break;
            }
            GuiConfig.Translateform(this);
            UiHelper.FillDataToTreeView(strType, trvStatus, docStatus);
            trvStatus.DatatreeView.Nodes[0].Expand();
        }
 /// <summary>
 ///     刷新索引列表
 /// </summary>
 private void RefreshList()
 {
     lstIndex.Items.Clear();
     foreach (var item in RuntimeMongoDbContext.GetCurrentCollection().GetIndexes())
     {
         var listItem = new ListViewItem(item.Name);
         listItem.SubItems.Add(item.Version.ToString(CultureInfo.InvariantCulture));
         listItem.SubItems.Add(EnumMgr.GetKeyString(item.Key));
         listItem.SubItems.Add(item.Namespace);
         listItem.SubItems.Add(item.IsBackground.ToString());
         listItem.SubItems.Add(item.IsSparse.ToString());
         listItem.SubItems.Add(item.IsUnique.ToString());
         listItem.SubItems.Add(item.DroppedDups.ToString());
         listItem.SubItems.Add(item.TimeToLive != TimeSpan.MaxValue
             ? item.TimeToLive.TotalSeconds.ToString(CultureInfo.InvariantCulture)
             : "Not Set");
         lstIndex.Items.Add(listItem);
     }
 }
示例#8
0
        private void cmdGeoNear_Click(object sender, EventArgs e)
        {
            BsonDocument mGeoNearAs = null;
            bool         IsHaystack = chkHaystack.Checked;

            try
            {
                if (IsHaystack)
                {
                    var geoSearchOption = new GeoHaystackSearchArgs();
                    geoSearchOption.MaxDistance = double.Parse(NumMaxDistance.Text);
                    geoSearchOption.Limit       = (int)NumResultCount.Value;
                    geoSearchOption.Near        = point;
                    // GeoHaystackSearch
                    mGeoNearAs = RuntimeMongoDbContext.GetCurrentCollection().GeoHaystackSearchAs <BsonDocument>(geoSearchOption).Response;
                }
                else
                {
                    var geoOption = new GeoNearArgs();
                    geoOption.DistanceMultiplier = double.Parse(NumDistanceMultiplier.Text);
                    geoOption.MaxDistance        = double.Parse(NumMaxDistance.Text);
                    geoOption.Spherical          = chkSpherical.Checked;
                    geoOption.Limit = (int)NumResultCount.Value;
                    if (radGeoJSON.Checked)
                    {
                        geoOption.Near = new GeoJsonPoint <GeoJson2DCoordinates>(new GeoJson2DCoordinates(point.X, point.Y));
                    }
                    else
                    {
                        geoOption.Near = point;
                    }
                    //GeoNearAs
                    mGeoNearAs = RuntimeMongoDbContext.GetCurrentCollection().GeoNearAs <BsonDocument>(geoOption).Response;
                }
            }
            catch (Exception ex)
            {
                Utility.ExceptionDeal(ex);
                return;
            }
            UiHelper.FillDataToTreeView("Result", trvGeoResult, mGeoNearAs);
            trvGeoResult.DatatreeView.Nodes[0].Expand();
        }
示例#9
0
        /// <summary>
        ///     加载
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmGroup_Load(object sender, EventArgs e)
        {
            var mongoCol     = RuntimeMongoDbContext.GetCurrentCollection();
            var mongoColumn  = MongoHelper.GetCollectionSchame(mongoCol);
            var conditionPos = new Point(50, 20);

            foreach (var item in mongoColumn)
            {
                //动态加载控件
                var ctrItem = new CheckBox {
                    Name = item, Location = conditionPos, Text = item
                };
                panColumn.Controls.Add(ctrItem);
                //纵向位置的累加
                conditionPos.Y += ctrItem.Height;
            }
            conditionPos = new Point(50, 20);
            var firstAddBsonElCtl = new ctlBsonValueTypeName {
                Location = conditionPos, Name = "BsonEl" + _conditionCount
            };
            var el = new BsonElement("count", new BsonInt32(0));

            firstAddBsonElCtl.SetElement(el);
            panBsonEl.Controls.Add(firstAddBsonElCtl);

            if (GuiConfig.IsUseDefaultLanguage)
            {
                return;
            }
            ctlReduce.Title   = GuiConfig.GetText(TextType.GroupTabReduce);
            ctlFinalize.Title =
                GuiConfig.GetText(TextType.GroupTabFinalize);
            lblSelectGroupField.Text =
                GuiConfig.GetText(TextType.GroupTabGroupNotes);
            lblAddInitField.Text =
                GuiConfig.GetText(TextType.GroupTabInitColumnNote);
            cmdAddInitField.Text =
                GuiConfig.GetText(TextType.GroupTabInitColumn);
            lblResult.Text = GuiConfig.GetText(TextType.GroupTabResult);
            cmdQuery.Text  = GuiConfig.GetText(TextType.GroupLoadQuery);
            cmdRun.Text    = GuiConfig.GetText(TextType.CommonOk);
        }
示例#10
0
        /// <summary>
        ///     Run Aggregate
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdRun_Click(object sender, EventArgs e)
        {
            if (_aggrArray.Count <= 0)
            {
                return;
            }
            var mCommandResult = CommandHelper.Aggregate(_aggrArray, RuntimeMongoDbContext.GetCurrentCollection().Name);

            if (mCommandResult.Ok)
            {
                UiHelper.FillDataToTreeView("Aggregate Result", trvResult, mCommandResult.Response);
                trvResult.DatatreeView.BeginUpdate();
                trvResult.DatatreeView.ExpandAll();
                trvResult.DatatreeView.EndUpdate();
            }
            else
            {
                MyMessageBox.ShowMessage("Aggregate Result", mCommandResult.ErrorMessage);
            }
        }
示例#11
0
        /// <summary>
        ///     当前对象的MONGO命令
        /// </summary>
        /// <param name="mMongoCommand">命令对象</param>
        /// <returns></returns>
        public static CommandResult ExecuteMongoCommand(MongoCommand mMongoCommand)
        {
            var resultCommandList = new List <CommandResult>();

            var mCommandResult = new CommandResult(new BsonDocument());

            switch (mMongoCommand.RunLevel)
            {
            case EnumMgr.PathLevel.CollectionAndView:
                if (string.IsNullOrEmpty(mMongoCommand.CommandString))
                {
                    mCommandResult = ExecuteMongoColCommand(mMongoCommand.CmdDocument,
                                                            RuntimeMongoDbContext.GetCurrentCollection());
                }
                else
                {
                    mCommandResult = ExecuteMongoColCommand(mMongoCommand.CommandString,
                                                            RuntimeMongoDbContext.GetCurrentCollection());
                }
                break;

            case EnumMgr.PathLevel.Database:
                if (string.IsNullOrEmpty(mMongoCommand.DatabaseName))
                {
                    mCommandResult = ExecuteMongoDBCommand(mMongoCommand.CmdDocument, RuntimeMongoDbContext.GetCurrentDataBase());
                }
                else
                {
                    var db = RuntimeMongoDbContext.GetCurrentClient().GetDatabase(mMongoCommand.DatabaseName);
                    mCommandResult = ExecuteMongoDBCommand(mMongoCommand.CmdDocument, db);
                }
                break;

            case EnumMgr.PathLevel.Instance:
                mCommandResult = ExecuteMongoSvrCommand(mMongoCommand.CmdDocument,
                                                        RuntimeMongoDbContext.GetCurrentServer());
                break;
            }
            resultCommandList.Add(mCommandResult);
            return(mCommandResult);
        }
示例#12
0
 /// <summary>
 ///     鼠标动作(顶层)
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void trvData_MouseClick_Top(object sender, MouseEventArgs e)
 {
     if (MDataViewInfo.IsView)
     {
         return;                       //View是只读的
     }
     if (_isNeedChangeNode)
     {
         //在节点展开和关闭后,不能使用这个方法来重新设定SelectedNode
         trvData.DatatreeView.SelectedNode = trvData.DatatreeView.GetNodeAt(e.Location);
     }
     _isNeedChangeNode = true;
     if (trvData.DatatreeView.SelectedNode == null)
     {
         return;
     }
     SetCurrentDocument(trvData.DatatreeView.SelectedNode, RuntimeMongoDbContext.GetCurrentCollection());
     if (trvData.DatatreeView.SelectedNode.Level == 0)
     {
         if (e.Button == MouseButtons.Right)
         {
             contextMenuStripMain = new ContextMenuStrip();
             //允许删除
             DelSelectRecordToolToolStripMenuItem.Enabled = true;
             contextMenuStripMain.Items.Add(DelSelectRecordToolToolStripMenuItem.Clone());
             //允许添加
             AddElementToolStripMenuItem.Enabled = true;
             contextMenuStripMain.Items.Add(AddElementToolStripMenuItem.Clone());
             //允许粘贴
             PasteElementToolStripMenuItem.Enabled = true;
             contextMenuStripMain.Items.Add(PasteElementToolStripMenuItem.Clone());
             trvData.DatatreeView.ContextMenuStrip = contextMenuStripMain;
             contextMenuStripMain.Show(trvData.DatatreeView.PointToScreen(e.Location));
         }
     }
     else
     {
         //非顶层元素
         trvData_MouseClick_NotTop(e);
     }
 }
示例#13
0
        private void JsEditor_Load(object sender, EventArgs e)
        {
            if (DesignMode)
            {
                return;
            }
            GuiConfig.Translateform(Controls);
            SaveStripButton.Image = Resources.save.ToBitmap();
//            if (!string.IsNullOrEmpty(JsName))
//            {
//                txtEditJavaScript.Text = Operater.LoadJavascript(JsName, RuntimeMongoDbContext.GetCurrentCollection());
//                txtEditJavaScript.Select(0, 0);
//            }
//            txtEditJavaScript.GotFocus += (x, y) => { RuntimeMongoDbContext.SelectObjectTag = StrDBtag; };


            if (!string.IsNullOrEmpty(JsName))
            {
                txtEditJavaScript.Text = Operater.LoadJavascript(JsName, RuntimeMongoDbContext.GetCurrentCollection());
            }
        }
示例#14
0
        private void cmdGeoNear_Click(object sender, EventArgs e)
        {
            var geoOption = new GeoNearArgs();

            geoOption.DistanceMultiplier = double.Parse(NumDistanceMultiplier.Text);
            geoOption.MaxDistance        = double.Parse(NumMaxDistance.Text);
            geoOption.Spherical          = chkSpherical.Checked;
            geoOption.Limit = (int)NumResultCount.Value;
            geoOption.Near  = new XYPoint(double.Parse(NumGeoX.Text), double.Parse(NumGeoY.Text));
            try
            {
                var mGeoNearAs =
                    RuntimeMongoDbContext.GetCurrentCollection().GeoNearAs <BsonDocument>(geoOption).Response;
                UiHelper.FillDataToTreeView("Result", trvGeoResult, mGeoNearAs);
                trvGeoResult.DatatreeView.Nodes[0].Expand();
            }
            catch (Exception ex)
            {
                Utility.ExceptionDeal(ex);
            }
        }
示例#15
0
        /// <summary>
        ///     Add New Document
        /// </summary>
        private void NewDocumentStripButton_Click(object sender, EventArgs e)
        {
            //居然可以指定_id...
            //这样的话,可能出现同一个数据库里面两个相同的_id的记录
            //Init.SystemManager.GetCurrentCollection().Insert(newdoc, new SafeMode(true));
            var t = _getDocument();

            if (t != null)
            {
                try
                {
                    RuntimeMongoDbContext.GetCurrentCollection().Insert(t);
                }
                catch (Exception ex)
                {
                    string strErrormsg = ex.ToString();
                    MyMessageBox.ShowMessage("Delete Error", strErrormsg, ex.ToString(), true);
                }
                RefreshGui();
            }
        }
示例#16
0
 ///// <summary>
 ///// 数据树形被选择后(TOP)
 ///// </summary>
 ///// <param name="sender"></param>
 ///// <param name="e"></param>
 private void trvData_AfterSelect_Top(object sender, TreeViewEventArgs e)
 {
     //InitControlsEnable();
     if (MDataViewInfo.IsView)
     {
         return;                       //View是只读的
     }
     RuntimeMongoDbContext.SelectObjectTag = MDataViewInfo.StrDbTag;
     if (trvData.DatatreeView.SelectedNode.Level == 0)
     {
         //顶层可以删除的节点
         if (!MDataViewInfo.IsReadOnly)
         {
             if (!Operater.IsSystemCollection(RuntimeMongoDbContext.GetCurrentCollection()) &&
                 !RuntimeMongoDbContext.GetCurrentCollection().IsCapped())
             {
                 //普通数据
                 //在顶层的时候,允许添加元素,不允许删除元素和修改元素(删除选中记录)
                 DelSelectRecordToolToolStripMenuItem.Enabled = true;
                 DelSelectRecordToolStripButton.Enabled       = true;
                 AddElementToolStripMenuItem.Enabled          = true;
                 if (ElementHelper.CanPasteAsElement)
                 {
                     PasteElementToolStripMenuItem.Enabled = true;
                     PasteElementStripButton.Enabled       = true;
                 }
             }
             else
             {
                 DelSelectRecordToolToolStripMenuItem.Enabled = false;
                 //DelSelectRecordToolStripButton.Enabled = false;
             }
         }
     }
     else
     {
         //非顶层元素
         trvData_AfterSelect_NotTop();
     }
 }
示例#17
0
        /// <summary>
        ///     全文检索
        /// </summary>
        /// <param name="key"></param>
        /// <param name="limit"></param>
        /// <param name="language"></param>
        /// <returns></returns>
        public static List <BsonDocument> SearchText(string key, int limit, string language = "")
        {
            //检索文法:
            //[Before2.6]http://docs.mongodb.org/manual/reference/command/text/#text-search-languages
            //[After2.6]http://docs.mongodb.org/manual/reference/operator/query/text/#op._S_text
            //检索关键字
            IMongoQuery textSearchOption = null;

            //语言
            if (string.IsNullOrEmpty(language))
            {
                textSearchOption = Query.Text(key);
            }
            else
            {
                textSearchOption = Query.Text(key, language);
            }
            var result             = RuntimeMongoDbContext.GetCurrentCollection().FindAs <BsonDocument>(textSearchOption);
            var resultDocumentList = result.SetLimit(limit).ToList();

            return(resultDocumentList);
        }
示例#18
0
        /// <summary>
        ///     Distinct
        /// </summary>
        /// <param name="strKey"></param>
        /// <returns></returns>
        private string Distinct(string strKey)
        {
            var strResult  = string.Empty;
            var resultList = RuntimeMongoDbContext.GetCurrentCollection().Distinct(strKey).ToList();

            resultList.Sort();
            //防止错误的条件造成的海量数据
            var count = 0;

            foreach (var item in resultList)
            {
                if (count == 1000)
                {
                    strResult = "Too many result,Display first 1000 records" + Environment.NewLine + strResult;
                    break;
                }
                strResult += item.ToJson(MongoHelper.JsonWriterSettings) + Environment.NewLine;
                count++;
            }
            strResult = "Distinct Count: " + resultList.Count + Environment.NewLine + Environment.NewLine + strResult;
            return(strResult);
        }
示例#19
0
        /// <summary>
        /// </summary>
        /// <param name="mIsShow"></param>
        public void InitByCurrentCollection(bool mIsShow)
        {
            var columnList =
                MongoHelper.GetCollectionSchame(RuntimeMongoDbContext.GetCurrentCollection());
            var fieldList = new List <DataFilter.QueryFieldItem>();

            foreach (var item in columnList)
            {
                //输出配置的初始化
                var queryFieldItem = new DataFilter.QueryFieldItem();
                queryFieldItem.ColName  = item;
                queryFieldItem.IsShow   = mIsShow;
                queryFieldItem.SortType = DataFilter.SortType.NoSort;
                if (queryFieldItem.ColName == ConstMgr.KeyId)
                {
                    queryFieldItem.IsShow = true;
                }
                fieldList.Add(queryFieldItem);
            }
            _mQueryFieldList = fieldList;
            SetFieldList();
        }
示例#20
0
 /// <summary>
 ///     删除元素
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void DropElementToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (trvData.DatatreeView.SelectedNode.Level == 1 & trvData.DatatreeView.SelectedNode.PrevNode == null)
     {
         MyMessageBox.ShowMessage("Error", "_id Can't be delete");
         return;
     }
     if (trvData.DatatreeView.SelectedNode.Parent.Text.EndsWith(ConstMgr.ArrayMark))
     {
         ElementHelper.DropArrayValue(trvData.DatatreeView.SelectedNode.FullPath,
                                      trvData.DatatreeView.SelectedNode.Index, RuntimeMongoDbContext.CurrentDocument,
                                      RuntimeMongoDbContext.GetCurrentCollection());
     }
     else
     {
         ElementHelper.DropElement(trvData.DatatreeView.SelectedNode.FullPath,
                                   (BsonElement)trvData.DatatreeView.SelectedNode.Tag, RuntimeMongoDbContext.CurrentDocument,
                                   RuntimeMongoDbContext.GetCurrentCollection());
     }
     trvData.DatatreeView.Nodes.Remove(trvData.DatatreeView.SelectedNode);
     IsNeedRefresh = true;
 }
示例#21
0
        /// <summary>
        ///     保存
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdSave_Click(object sender, EventArgs e)
        {
            var savefile = new SaveFileDialog {
                Filter = Utility.XmlFilter
            };

            if (savefile.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            // 设置DataFilter
            if (string.IsNullOrEmpty(txtSql.Text))
            {
                //设置DataFilter
                SetCurrDataFilter();
            }
            else
            {
                _currentDataViewInfo.MDataFilter = SqlHelper.ConvertQuerySql(txtSql.Text,
                                                                             RuntimeMongoDbContext.GetCurrentCollection());
            }
            _currentDataViewInfo.MDataFilter.SaveFilter(savefile.FileName);
        }
示例#22
0
        /// <summary>
        ///     插入JS到系统JS库
        /// </summary>
        /// <param name="jsName"></param>
        /// <param name="jsCode"></param>
        public static string CreateNewJavascript(string jsName, string jsCode)
        {
            var jsCol = RuntimeMongoDbContext.GetCurrentCollection();

            //标准的JS库格式未知
            if (QueryHelper.IsExistByKey(jsName))
            {
                return(string.Empty);
            }
            CommandResult result;

            try
            {
                result =
                    new CommandResult(
                        jsCol.Insert(new BsonDocument().Add(ConstMgr.KeyId, jsName).Add("value", jsCode)).Response);
            }
            catch (MongoCommandException ex)
            {
                result = new CommandResult(ex.Result);
            }
            return(result.Response["err"] == BsonNull.Value ? string.Empty : result.Response["err"].ToString());
        }
示例#23
0
        public FrmStageBuilder()
        {
            InitializeComponent();
            txtLimit.Enabled  = chkLimit.Checked;
            txtSkip.Enabled   = chkSkip.Checked;
            txtSample.Enabled = chkSample.Checked;

            txtLimit.KeyPress  += NumberTextBox.NumberTextInt_KeyPress;
            txtSkip.KeyPress   += NumberTextBox.NumberTextInt_KeyPress;
            txtSample.KeyPress += NumberTextBox.NumberTextInt_KeyPress;

            var columnList = MongoHelper.GetCollectionSchame(RuntimeMongoDbContext.GetCurrentCollection());

            foreach (var fieldname in columnList)
            {
                cmbSortByCount.Items.Add("$" + fieldname);
                cmbUnwind.Items.Add("$" + fieldname);
            }

            chkSkip.CheckedChanged   += (x, y) => { txtSkip.Enabled = chkSkip.Checked; };
            chkLimit.CheckedChanged  += (x, y) => { txtLimit.Enabled = chkLimit.Checked; };
            chkSample.CheckedChanged += (x, y) => { txtSample.Enabled = chkSample.Checked; };
        }
示例#24
0
        /// <summary>
        ///     运行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdRun_Click(object sender, EventArgs e)
        {
            var map    = new BsonJavaScript(ctlMapFunction.Context);
            var reduce = new BsonJavaScript(ctlReduceFunction.Context);
            //TODO:这里可能会超时,失去响应
            //需要设置SocketTimeOut
            var args = new MapReduceArgs();

            args.MapFunction    = map;
            args.ReduceFunction = reduce;
            try
            {
                var mMapReduceResult = RuntimeMongoDbContext.GetCurrentCollection().MapReduce(args);
                UiHelper.FillDataToTreeView("MapReduce Result", trvResult, mMapReduceResult.Response);
                trvResult.DatatreeView.BeginUpdate();
                trvResult.DatatreeView.ExpandAll();
                trvResult.DatatreeView.EndUpdate();
            }
            catch (Exception ex)
            {
                Utility.ExceptionDeal(ex);
            }
        }
示例#25
0
 /// <summary>
 ///     保存
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnSave_Click(object sender, EventArgs e)
 {
     MongoHelper.ActionDone += (x, y) => MyMessageBox.ShowMessage("ExportImport", y.Message);
     ExportImport.ExportToFile(_viewinfo, ctlExportFilePicker.SelectedPathOrFileName, _exportType,
                               RuntimeMongoDbContext.GetCurrentCollection());
 }
示例#26
0
        /// <summary>
        ///     窗体初始化
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void frmStatus_Load(object sender, EventArgs e)
        {
            if (!GuiConfig.IsMono)
            {
                Icon = GetSystemIcon.ConvertImgToIcon(Resources.KeyInfo);
            }
            GuiConfig.Translateform(this);
            var strType   = RuntimeMongoDbContext.SelectTagType;
            var docStatus = new BsonDocument();

            cmbChartField.Visible          = false;
            chartResult.Visible            = false;
            tempIsDisplayNumberWithKSystem = CtlTreeViewColumns.IsDisplayNumberWithKSystem;
            CtlTreeViewColumns.IsDisplayNumberWithKSystem = true;

            switch (strType)
            {
            case ConstMgr.ServerTag:
            case ConstMgr.SingleDbServerTag:
                if (RuntimeMongoDbContext.GetCurrentServerConfig().LoginAsAdmin)
                {
                    var StatusList = new List <BsonDocument>();
                    var Status     = CommandExecute.ExecuteMongoSvrCommand(DataBaseCommand.ServerStatusCommand,
                                                                           RuntimeMongoDbContext.GetCurrentServer()).Response;
                    StatusList.Add(Status);
                    try
                    {
                        var ServerDesripter = MongoUtility.ToolKit.MongoHelper.GetCurrentServerDescription();
                        StatusList.Add(ServerDesripter);
                    }
                    catch (Exception)
                    {
                        //Repl的时候,无法获得
                    }
                    UiHelper.FillDataToTreeView(strType, trvStatus, StatusList, 0);
                    trvStatus.Height = trvStatus.Height * 2;
                    trvStatus.DatatreeView.Nodes[0].Expand();
                    trvStatus.DatatreeView.Nodes[1].Expand();
                    return;
                }
                break;

            case ConstMgr.DatabaseTag:
            case ConstMgr.SingleDatabaseTag:
                docStatus             = RuntimeMongoDbContext.GetCurrentDataBase().GetStats().Response.ToBsonDocument();
                cmbChartField.Visible = true;
                chartResult.Visible   = true;
                //{{ "db" : "aaaa",
                //   "collections" : 8,
                //   "objects" : 0,
                //   "avgObjSize" : 0.0,
                //   "dataSize" : 0.0,
                //   "storageSize" : 32768.0,
                //   "numExtents" : 0,
                //   "indexes" : 8,
                //   "indexSize" : 32768.0,
                //   "ok" : 1.0 }}
                var statuspoint = docStatus.AsBsonDocument;
                //这里其实应该看Collection的Status,不同的引擎所拥有的状态不一样
                if (statuspoint.Contains("avgObjSize"))
                {
                    cmbChartField.Items.Add("AverageObjectSize");
                }
                if (statuspoint.Contains("dataSize"))
                {
                    cmbChartField.Items.Add("DataSize");
                }
                if (statuspoint.Contains("extentCount"))
                {
                    cmbChartField.Items.Add("ExtentCount");
                }
                if (statuspoint.Contains("indexes"))
                {
                    cmbChartField.Items.Add("IndexCount");
                }
                if (statuspoint.Contains("lastExtentSize"))
                {
                    cmbChartField.Items.Add("LastExtentSize");
                }
                //MaxDocuments仅在CapedCollection时候有效
                if (statuspoint.Contains("MaxDocuments"))
                {
                    cmbChartField.Items.Add("MaxDocuments");
                }
                if (statuspoint.Contains("ObjectCount"))
                {
                    cmbChartField.Items.Add("ObjectCount");
                }
                if (statuspoint.Contains("PaddingFactor"))
                {
                    cmbChartField.Items.Add("PaddingFactor");
                }
                if (statuspoint.Contains("storageSize"))
                {
                    cmbChartField.Items.Add("StorageSize");
                }
                cmbChartField.SelectedIndex = 0;
                try
                {
                    RefreshDbStatusChart("StorageSize");
                }
                catch (Exception ex)
                {
                    Utility.ExceptionDeal(ex);
                }
                break;

            case ConstMgr.CollectionTag:
                //TODO:这里无法看到Collection的Document Validation信息。
                docStatus = RuntimeMongoDbContext.GetCurrentCollection().GetStats().Response.ToBsonDocument();
                //图形化初始化
                chartResult.Visible = true;

                chartResult.Series.Clear();
                chartResult.Titles.Clear();
                var seriesResult = new Series("Usage");
                var dpDataSize   = new DataPoint(0, RuntimeMongoDbContext.GetCurrentCollection().GetStats().DataSize)
                {
                    LegendText    = "DataSize",
                    LegendToolTip = "DataSize",
                    ToolTip       = "DataSize"
                };
                seriesResult.Points.Add(dpDataSize);

                var dpTotalIndexSize = new DataPoint(0,
                                                     RuntimeMongoDbContext.GetCurrentCollection().GetStats().TotalIndexSize)
                {
                    LegendText    = "TotalIndexSize",
                    LegendToolTip = "TotalIndexSize",
                    ToolTip       = "TotalIndexSize"
                };
                seriesResult.Points.Add(dpTotalIndexSize);

                var dpFreeSize = new DataPoint(0,
                                               RuntimeMongoDbContext.GetCurrentCollection().GetStats().StorageSize -
                                               RuntimeMongoDbContext.GetCurrentCollection().GetStats().TotalIndexSize -
                                               RuntimeMongoDbContext.GetCurrentCollection().GetStats().DataSize)
                {
                    LegendText    = "FreeSize",
                    LegendToolTip = "FreeSize",
                    ToolTip       = "FreeSize"
                };
                seriesResult.Points.Add(dpFreeSize);

                seriesResult.ChartType = SeriesChartType.Pie;
                chartResult.Series.Add(seriesResult);
                chartResult.Titles.Add(new Title("Usage"));

                break;

            default:
                if (RuntimeMongoDbContext.GetCurrentServerConfig().LoginAsAdmin)
                {
                    docStatus =
                        CommandExecute.ExecuteMongoSvrCommand(DataBaseCommand.ServerStatusCommand,
                                                              RuntimeMongoDbContext.GetCurrentServer()).Response;
                    trvStatus.Height = trvStatus.Height * 2;
                }
                break;
            }
            UiHelper.FillDataToTreeView(strType, trvStatus, docStatus);
            trvStatus.DatatreeView.Nodes[0].Expand();
        }
示例#27
0
 /// <summary>
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void trvData_AfterCollapse(object sender, TreeViewEventArgs e)
 {
     trvData.DatatreeView.SelectedNode = e.Node;
     _isNeedChangeNode = false;
     SetCurrentDocument(e.Node, RuntimeMongoDbContext.GetCurrentCollection());
 }
示例#28
0
        /// <summary>
        ///     Collection  Hanlder.
        /// </summary>
        /// <param name="e">E.</param>
        private void CollectionHandler(TreeNodeMouseClickEventArgs e)
        {
            if (GuiConfig.IsUseDefaultLanguage)
            {
                statusStripMain.Items[0].Text = "Selected Collection:" + RuntimeMongoDbContext.SelectTagData;
            }
            else
            {
                statusStripMain.Items[0].Text =
                    GuiConfig.GetText(TextType.SelectedCollection) + ":" +
                    RuntimeMongoDbContext.SelectTagData;
            }

            var mongoCol = RuntimeMongoDbContext.GetCurrentCollection();

            //解禁 删除数据集
            if (!Operater.IsSystemCollection())
            {
                //系统数据库无法删除!!
                if (!RuntimeMongoDbContext.CurrentMongoConnectionconfig.IsReadOnly)
                {
                    DelMongoCollectionToolStripMenuItem.Enabled = true;
                    RenameCollectionToolStripMenuItem.Enabled   = true;
                }
            }
            if (!RuntimeMongoDbContext.CurrentMongoConnectionconfig.IsReadOnly)
            {
                ImportCollectionToolStripMenuItem.Enabled = true;
                CompactToolStripMenuItem.Enabled          = true;
            }
            if (!Operater.IsSystemCollection() &&
                !RuntimeMongoDbContext.CurrentMongoConnectionconfig.IsReadOnly)
            {
                IndexManageToolStripMenuItem.Enabled = true;
                ReIndexToolStripMenuItem.Enabled     = true;
            }
            DumpCollectionToolStripMenuItem.Enabled   = true;
            ExportCollectionToolStripMenuItem.Enabled = true;
            AggregationToolStripMenuItem.Enabled      = true;
            ViewDataToolStripMenuItem.Enabled         = true;
            CollectionStatusToolStripMenuItem.Enabled = true;
            ValidateToolStripMenuItem.Enabled         = true;
            ExportToFileToolStripMenuItem.Enabled     = true;

            if (!mongoCol.IsCapped())
            {
                ConvertToCappedtoolStripMenuItem.Enabled = true;
            }

            if (e.Button == MouseButtons.Right)
            {
                contextMenuStripMain = new ContextMenuStrip();
                if (SystemManager.MonoMode)
                {
                    //悲催MONO不支持
                    var delMongoCollection = DelMongoCollectionToolStripMenuItem.Clone();
                    delMongoCollection.Click += DelMongoCollectionToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(delMongoCollection);

                    var renameCollection = RenameCollectionToolStripMenuItem.Clone();
                    renameCollection.Click += RenameCollectionToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(renameCollection);

                    var dumpCollection = DumpCollectionToolStripMenuItem.Clone();
                    dumpCollection.Click += DumpCollectionToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(dumpCollection);

                    var restoreMongo = RestoreMongoToolStripMenuItem.Clone();
                    restoreMongo.Click += RestoreMongoToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(restoreMongo);

                    var importCollection = ImportCollectionToolStripMenuItem.Clone();
                    importCollection.Click += ImportCollectionToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(importCollection);

                    var exportCollection = ExportCollectionToolStripMenuItem.Clone();
                    exportCollection.Click += ExportCollectionToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(exportCollection);

                    var compact = CompactToolStripMenuItem.Clone();
                    compact.Click += CompactToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(compact);

                    contextMenuStripMain.Items.Add(new ToolStripSeparator());

                    var viewData = ViewDataToolStripMenuItem.Clone();
                    viewData.Click += (x, y) => ViewDataObj();
                    contextMenuStripMain.Items.Add(viewData);

                    var aggregationMenu = AggregationToolStripMenuItem.Clone();

                    var distinct = distinctToolStripMenuItem.Clone();
                    distinct.Click += distinctToolStripMenuItem_Click;
                    aggregationMenu.DropDownItems.Add(distinct);

                    var mapReduce = mapReduceToolStripMenuItem.Clone();
                    mapReduce.Click += mapReduceToolStripMenuItem_Click;
                    aggregationMenu.DropDownItems.Add(mapReduce);

                    contextMenuStripMain.Items.Add(aggregationMenu);
                    contextMenuStripMain.Items.Add(new ToolStripSeparator());

                    var indexManage = IndexManageToolStripMenuItem.Clone();
                    indexManage.Click += IndexManageToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(indexManage);

                    var reIndex = ReIndexToolStripMenuItem.Clone();
                    reIndex.Click += ReIndexToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(reIndex);

                    contextMenuStripMain.Items.Add(new ToolStripSeparator());

                    var collectionStatus = CollectionStatusToolStripMenuItem.Clone();
                    collectionStatus.Click += CollectionStatusToolStripMenuItem_Click;
                    contextMenuStripMain.Items.Add(collectionStatus);
                }
                else
                {
                    contextMenuStripMain.Items.Add(DelMongoCollectionToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(RenameCollectionToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ConvertToCappedtoolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(DumpCollectionToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(RestoreMongoToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ImportCollectionToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ExportCollectionToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ExportToFileToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(CompactToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(new ToolStripSeparator());
                    contextMenuStripMain.Items.Add(ViewDataToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(AggregationToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(new ToolStripSeparator());
                    contextMenuStripMain.Items.Add(IndexManageToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ReIndexToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(new ToolStripSeparator());
                    contextMenuStripMain.Items.Add(CollectionStatusToolStripMenuItem.Clone());
                    contextMenuStripMain.Items.Add(ValidateToolStripMenuItem.Clone());
                }
                e.Node.ContextMenuStrip = contextMenuStripMain;
                contextMenuStripMain.Show(trvsrvlst.PointToScreen(e.Location));
            }
            //PlugIn
            foreach (ToolStripMenuItem item in plugInToolStripMenuItem.DropDownItems)
            {
                if (PlugIn.PlugInList[item.Tag.ToString()].RunLv == PlugInBase.PathLv.CollectionLv)
                {
                    item.Enabled = true;
                }
            }
        }
示例#29
0
        /// <summary>
        ///     数据树形被选择后(非TOP)
        /// </summary>
        /// <returns>是否能被修改[双击事件]</returns>
        private bool trvData_AfterSelect_NotTop()
        {
            if (MDataViewInfo.IsView)
            {
                return(false);                      //View是只读的
            }
            //非顶层可以删除的节点
            if (!Operater.IsSystemCollection(RuntimeMongoDbContext.GetCurrentCollection()) &&
                !MDataViewInfo.IsReadOnly &&
                !RuntimeMongoDbContext.GetCurrentCollection().IsCapped())
            {
                //普通数据:允许添加元素,不允许删除元素
                DropElementToolStripMenuItem.Enabled = true;
                CopyElementToolStripMenuItem.Enabled = true;
                CopyElementStripButton.Enabled       = true;
                CutElementToolStripMenuItem.Enabled  = true;
                CutElementStripButton.Enabled        = true;
                if (trvData.DatatreeView.SelectedNode.Nodes.Count != 0)
                {
                    //父节点
                    //1. 以Array_Mark结尾的数组
                    //2. Document
                    if (trvData.DatatreeView.SelectedNode.FullPath.EndsWith(ConstMgr.ArrayMark))
                    {
                        //列表的父节点
                        if (ElementHelper.CanPasteAsValue)
                        {
                            PasteElementToolStripMenuItem.Enabled = true;
                            PasteElementStripButton.Enabled       = true;
                        }
                    }
                    else
                    {
                        //文档的父节点
                        if (ElementHelper.CanPasteAsElement)
                        {
                            PasteElementToolStripMenuItem.Enabled = true;
                            PasteElementStripButton.Enabled       = true;
                        }
                    }
                    AddElementToolStripMenuItem.Enabled    = true;
                    ModifyElementToolStripMenuItem.Enabled = false;
                }
                else
                {
                    //子节点
                    //1.简单元素
                    //2.空的Array
                    //3.空的文档
                    //4.Array中的Value
                    BsonValue t;
                    if (trvData.DatatreeView.SelectedNode.Tag is BsonElement)
                    {
                        //子节点是一个元素,获得子节点的Value
                        t = ((BsonElement)trvData.DatatreeView.SelectedNode.Tag).Value;
                        if (t.IsBsonDocument || t.IsBsonArray)
                        {
                            //2.空的Array
                            //3.空的文档
                            ModifyElementToolStripMenuItem.Enabled = false;
                            AddElementToolStripMenuItem.Enabled    = true;
                            if (t.IsBsonDocument)
                            {
                                //3.空的文档
                                if (ElementHelper.CanPasteAsElement)
                                {
                                    PasteElementToolStripMenuItem.Enabled = true;
                                    PasteElementStripButton.Enabled       = true;
                                }
                            }
                            if (t.IsBsonArray)
                            {
                                //3.Array
                                if (ElementHelper.CanPasteAsValue)
                                {
                                    PasteElementToolStripMenuItem.Enabled = true;
                                    PasteElementStripButton.Enabled       = true;
                                }
                            }
                        }
                        else
                        {
                            //1.简单元素
                            ModifyElementToolStripMenuItem.Enabled = true;
                            AddElementToolStripMenuItem.Enabled    = false;
                        }
                    }
                    else
                    {
                        //子节点是一个Array的Value,获得Value
                        //4.Array中的Value
                        t = (BsonValue)trvData.DatatreeView.SelectedNode.Tag;
                        ModifyElementToolStripMenuItem.Enabled = true;
                        if (t.IsBsonArray || t.IsBsonDocument)
                        {
                            //当这个值是一个数组或者文档时候,仍然允许其添加子元素
                            AddElementToolStripMenuItem.Enabled = true;
                        }
                        else
                        {
                            AddElementToolStripMenuItem.Enabled = false;
                        }
                    }
                }
            }

            return(ModifyElementToolStripMenuItem.Enabled);
        }
示例#30
0
        /// <summary>
        ///     确认
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmdOK_Click(object sender, EventArgs e)
        {
            var mongoCol  = RuntimeMongoDbContext.GetCurrentCollection();
            var query     = QueryHelper.GetQuery(GroupConditionList);
            var groupdoc  = new GroupByDocument();
            var chartTite = string.Empty;

            foreach (CheckBox item in panColumn.Controls)
            {
                if (!item.Checked)
                {
                    continue;
                }
                groupdoc.Add(item.Name, true);
                chartTite += item.Name + ",";
            }
            chartTite = chartTite.TrimEnd(",".ToCharArray());
            var initial = new BsonDocument();

            for (var i = 0; i < _conditionCount; i++)
            {
                var ctl = (ctlBsonValueTypeName)Controls.Find("BsonEl" + (i + 1), true)[0];
                if (ctl.IsSetted)
                {
                    initial.Add(ctl.GetElement());
                }
            }

            var reduce    = new BsonJavaScript(ctlReduce.Context);
            var finalize  = new BsonJavaScript(ctlFinalize.Context);
            var resultlst = new List <BsonDocument>();

            try
            {
                //SkipCnt Reset
                var result = mongoCol.Group(query, groupdoc, initial, reduce, finalize);
                //图形化初始化
                chartResult.Series.Clear();
                chartResult.Titles.Clear();
                var seriesResult = new Series("Result");

                //防止错误的条件造成的海量数据
                var count = 0;
                foreach (var item in result)
                {
                    if (count == 1000)
                    {
                        break;
                    }
                    resultlst.Add(item);
                    //必须带有Count元素
                    var dPoint = new DataPoint(0, (double)item.GetElement("count").Value);
                    seriesResult.Points.Add(dPoint);
                    count++;
                }
                ViewHelper.FillJsonDataToTextBox(txtResult, resultlst, 0);
                if (count == 1001)
                {
                    txtResult.Text = "Too many result,Display first 1000 records" + Environment.NewLine + txtResult.Text;
                }
                txtResult.Select(0, 0);
                //图形化加载
                chartResult.Series.Add(seriesResult);
                chartResult.Titles.Add(new Title(chartTite));
                tabGroup.SelectedIndex = 4;
            }
            catch (Exception ex)
            {
                Utility.ExceptionDeal(ex, "Exception", "Exception is Happened");
            }
        }