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); } } }
/// <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(); }
/// <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); } } }
/// <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(); }
/// <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); } }
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); } }
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(); }
/// <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); }
/// <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); } }
/// <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); }
/// <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); } }
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()); } }
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); } }
/// <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(); } }
///// <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(); } }
/// <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); }
/// <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); }
/// <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(); }
/// <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; }
/// <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); }
/// <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()); }
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; }; }
/// <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); } }
/// <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()); }
/// <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(); }
/// <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()); }
/// <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; } } }
/// <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); }
/// <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"); } }