服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - MongoDB - vs2019 下用 vb.net编写窗体程序连接 mongodb4.2的方法

vs2019 下用 vb.net编写窗体程序连接 mongodb4.2的方法

2020-08-21 15:51saintdingtheGreat MongoDB

这篇文章主要介绍了vs2019 下用 vb.net编写窗体程序连接 mongodb4.2,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

说起来,查看Mongodb官方的接口文档是场噩梦,尽管mongodb官方花了大力气整顿了它的API,但是简单的接口罗列,0代码示范,让人无从开始。幸亏有很多天才,成功破译,我才得以沿着他们走的路,照猫画虎的走下去。整个项目结构如下:

vs2019 下用 vb.net编写窗体程序连接 mongodb4.2的方法

类文件中vbtest.vb数据库实体类对应着mongodb文档vbtest,用于数据操作测试

 

Imports MongoDB.Bson

 

 

Public Class vbtest

	Public _id As ObjectId

	Public content As String

	End Class

 

vs2019 下用 vb.net编写窗体程序连接 mongodb4.2的方法

(optional)vbmongo.vb是绑定好数据库实体类vbtest的版本

 

Imports MongoDB.Bson

	Imports MongoDB.Driver

 

 

Public Class vbmongo

	Public client

	Public collection As IMongoCollection(Of vbtest)

	Public database As IMongoDatabase

	Public mlist As List(Of vbtest)

	Public builder As FilterDefinitionBuilder(Of vbtest) = New FilterDefinitionBuilder(Of vbtest)

	Public filter As FilterDefinition(Of vbtest)

	Public Sub New(ByVal dbname As String, ByVal collectionname As String)

	client = New MongoClient("mongodb://127.0.0.1:27017")

	database = client.GetDatabase(dbname)

	collection = database.GetCollection(Of vbtest)(collectionname)

	End Sub

 

 

Public Async Function loadrecords() As Task(Of List(Of vbtest))

	filter = builder.Ne(Of ObjectId)("_id", New ObjectId())//_id不等于空的记录,通过这种方法蹩脚的实现了查找全部的功能Builder的大多数条件设置函数都用到了泛型Ne(Of TField)

	Dim mlist As List(Of vbtest) = Await collection.Find(filter).ToListAsync()//TField可以理解为 type of field 对应的是实体类中字段的数据类型例如 OBjectId或者String等等

	Return mlist

	End Function

	Public Async Function loadone(ByVal _id As String) As Task(Of vbtest)

	filter = builder.Eq(Of ObjectId)("_id", New ObjectId(_id))

	Dim mlist As vbtest = Await collection.Find(filter).FirstOrDefaultAsync()

	Return mlist

	End Function

 

 

Public Async Function updateone(ByVal _id As String, ByVal doc As vbtest) As Task(Of vbtest)

	filter = builder.Eq(Of ObjectId)("_id", New ObjectId(_id))

	Dim up As UpdateDefinitionBuilder(Of vbtest) = New UpdateDefinitionBuilder(Of vbtest)()

	Dim updef As UpdateDefinition(Of vbtest)

	updef = up.Set(Of String)("content", doc.content)

	'.Set(Of String)("content", doc)

	collection.UpdateOneAsync(filter, updef)

	End Function

 

 

End Class

 

说起来mongodb的连接可以分几步,根据连接字符串打开链接,获取数据库,获取文档,进而在文档的基础上进行增删改查。对于vb.net操作mongodb,完全是根据c#的操作范例,根据vb.net的语法特点临摹出来的。

首先需要对项目进行Nuget包的安装,我们要搜寻的是MongoDB.Driver

vs2019 下用 vb.net编写窗体程序连接 mongodb4.2的方法

这里创建了一个vb.net的泛型类vbmongoT,只写了单个查找,查找列表和更新操作,函数中大量成对出现了Async和Await关键字,用于标识该功能使用了异步编程,在窗体程序中进行调用的时候,仍需要在成对的使用Async Await的关键字,因为异步函数返回的往往是Task<TResult>类型(c#)或者 Task(Of TResult) (vb.net)需要在调用函数体中使用await关键字拿到最终结果Imports MongoDB.BsonImports MongoDB.Driver

 

Public Class vbmongoT(Of T)

	Public client

	Public collection As IMongoCollection(Of T)

	Public database As IMongoDatabase

	Public mlist As List(Of T)

	Public builder As FilterDefinitionBuilder(Of T) = New FilterDefinitionBuilder(Of T)

	Public up As UpdateDefinitionBuilder(Of T)

	Public updef As UpdateDefinition(Of T)

	Public filter As FilterDefinition(Of T)

	Public Sub New(ByVal dbname As String, ByVal collectionname As String)

	client = New MongoClient("mongodb://127.0.0.1:27017")

	database = client.GetDatabase(dbname)

	collection = database.GetCollection(Of T)(collectionname)

	End Sub

 

 

Public Async Function loadrecords() As Task(Of List(Of T))

	filter = builder.Ne(Of ObjectId)("_id", New ObjectId())

	Dim mlist As List(Of T) = Await collection.Find(filter).ToListAsync()

	Return mlist

	End Function

	Public Async Function loadone(ByVal _id As String) As Task(Of T)

	filter = builder.Eq(Of ObjectId)("_id", New ObjectId(_id))//_id满足查找条件的记录,Builder的大多数条件设置函数都用到了泛型:例如Ne(Of TField)

	Dim mlist As T = Await collection.Find(filter).FirstOrDefaultAsync()

	Return mlist

	End Function

	Public Async Function updateone(ByVal filter As FilterDefinition(Of T), ByVal updef As UpdateDefinition(Of T)) As Task(Of T)

	'updef = up.Set(Of String)("content", doc.content) '.Set(Of String)("content", doc)

	Await collection.UpdateOneAsync(filter, updef)

	End Function

	End Class

 

在mongodb这一版本的官方API里,IMongoCollection对象是查找,添加,更新,删除等动作的发起者,这里面查找,更新,删除都要用到查询条件,

官方谓之filter(过滤器)C#: FilterDefinition<T> VB.net:FilterDefinition (Of T)

而过滤器是过滤器模具的建模结果

过滤器模具:C#: FilterDefinitionBuilder<T> VB.net:FilterDefinitionBuilder (Of T)

在Mongodb.Driver这个大类下面 建议直接翻看FilterDefinitionBuilder的介绍 https://mongodb.github.io/mongo-csharp-driver/2.10/apidocs/html/T_MongoDB_Driver_FilterDefinitionBuilder_1.htm

同样的数据库文档的更新操作由UpdateDefinitionBuilder 设置更新字段后产生的 UpdateDefinition完成

窗体程序部分

vs2019 下用 vb.net编写窗体程序连接 mongodb4.2的方法

 

Imports MongoDB.Bson

	Imports MongoDB.Driver

 

 

Public Class Form1

	Public client

	Public bsdoc As vbtest

	Public collection As IMongoCollection(Of vbtest)

	Public database As IMongoDatabase

	Public mlist As List(Of vbtest)

	Public builder As FilterDefinitionBuilder(Of vbtest) = New FilterDefinitionBuilder(Of vbtest)

	Public vm As vbmongoT(Of vbtest) = New vbmongoT(Of vbtest)("meandmycoach", "vbtest")

	Public filter As FilterDefinition(Of vbtest)

	Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

	bsdoc.content = RichTextBox1.Text

	vm.filter = vm.builder.Eq(Of ObjectId)("_id", New ObjectId(ComboBox1.Text))

	vm.up = New UpdateDefinitionBuilder(Of vbtest)

	vm.updef = vm.up.Set(Of String)("content", bsdoc.content)

	'vm.up.Set(Of String)("content", bsdoc.content)

	vm.updef = vm.up.Combine(vm.updef)

	vm.updateone(vm.filter, vm.updef)

 

 

End Sub

 

 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

	vm = New vbmongoT(Of vbtest)("meandmycoach", "vbtest")

	Dim bsdoc As vbtest = New vbtest()

	End Sub

 

 

Private Async Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click

	mlist = Await vm.loadrecords()

	For i As Integer = 0 To mlist.Count - 1

	ComboBox1.Items.Add(mlist(i)._id.ToString())

	Next

	ComboBox1.Text = ComboBox1.Items(0)

	Label2.Text = mlist.Count.ToString()

	End Sub

 

 

Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged

 

 

End Sub

 

 

Private Async Sub ComboBox1_TextChanged(sender As Object, e As EventArgs) Handles ComboBox1.TextChanged

	bsdoc = Await vm.loadone(ComboBox1.Text)

	RichTextBox1.Text = bsdoc.content

	End Sub

 

 

Private Async Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged

 

 

End Sub

	End Class

 

功能描述:通过点击图片,加载所有的vbtest文档记录,combobox1专门用于显示ObjectId,可以通过ToString()方法转换为普通字符串

随着下拉框ObjectId的改变,richtext1控件加载vbtest实体类对应记录的Content字段,可以更改字段内容后点击更新提交按钮完成文档的UpdateOneAsync操作

总结

到此这篇关于vs2019 下用 vb.net编写窗体程序连接 mongodb4.2的文章就介绍到这了,更多相关vs2019连接 mongodb4.2内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/saintdingspage/p/13437549.html

延伸 · 阅读

精彩推荐
  • MongoDBMongoDB查询之高级操作详解(多条件查询、正则匹配查询等)

    MongoDB查询之高级操作详解(多条件查询、正则匹配查询等)

    这篇文章主要给大家介绍了关于MongoDB查询之高级操作(多条件查询、正则匹配查询等)的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者...

    w田翔3872020-12-19
  • MongoDBMongoDB系列教程(五):mongo语法和mysql语法对比学习

    MongoDB系列教程(五):mongo语法和mysql语法对比学习

    这篇文章主要介绍了MongoDB系列教程(五):mongo语法和mysql语法对比学习,本文对熟悉Mysql数据库的同学来说帮助很大,用对比的方式可以快速学习到MongoDB的命...

    MongoDB教程网3252020-05-01
  • MongoDBMongoDB的索引

    MongoDB的索引

    数据库中的索引就是用来提高查询操作的性能,但是会影响插入、更新和删除的效率,因为数据库不仅要执行这些操作,还要负责索引的更新 ...

    MongoDB教程网2532020-05-12
  • MongoDBmongodb数据库基础知识之连表查询

    mongodb数据库基础知识之连表查询

    这篇文章主要给大家介绍了关于mongodb数据库基础知识之连表查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用mongodb具有一定的参...

    ZJW02155642020-05-22
  • MongoDBMongodb索引的优化

    Mongodb索引的优化

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。接下来通过本文给大家介绍Mongodb索引的优化,本文介绍的非常详细,具有参考借鉴价值,感...

    MRR3252020-05-05
  • MongoDB在mac系统下安装与配置mongoDB数据库

    在mac系统下安装与配置mongoDB数据库

    这篇文章主要介绍了在mac系统下安装与配置mongoDB数据库的操作步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    CXYhh1219312021-11-14
  • MongoDBWindows下MongoDB配置用户权限实例

    Windows下MongoDB配置用户权限实例

    这篇文章主要介绍了Windows下MongoDB配置用户权限实例,本文实现需要输入用户名、密码才可以访问MongoDB数据库,需要的朋友可以参考下 ...

    MongoDB教程网3082020-04-29
  • MongoDBMongoDB多条件模糊查询示例代码

    MongoDB多条件模糊查询示例代码

    这篇文章主要给大家介绍了关于MongoDB多条件模糊查询的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MongoDB具有一定的参考学习价值...

    浅夏晴空5902020-05-25