亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MongoDB > 正文

vs2019 下用 vb.net編寫窗體程序連接 mongodb4.2的方法

2020-10-29 18:40:13
字體:
來源:轉載
供稿:網友

說起來,查看Mongodb官方的接口文檔是場噩夢,盡管mongodb官方花了大力氣整頓了它的API,但是簡單的接口羅列,0代碼示范,讓人無從開始。幸虧有很多天才,成功破譯,我才得以沿著他們走的路,照貓畫虎的走下去。整個項目結構如下:

類文件中vbtest.vb數據庫實體類對應著mongodb文檔vbtest,用于數據操作測試

Imports MongoDB.BsonPublic Class vbtest Public _id As ObjectId Public content As StringEnd Class

(optional)vbmongo.vb是綁定好數據庫實體類vbtest的版本

Imports MongoDB.BsonImports MongoDB.DriverPublic 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 FunctionEnd Class

說起來mongodb的連接可以分幾步,根據連接字符串打開鏈接,獲取數據庫,獲取文檔,進而在文檔的基礎上進行增刪改查。對于vb.net操作mongodb,完全是根據c#的操作范例,根據vb.net的語法特點臨摹出來的。

首先需要對項目進行Nuget包的安裝,我們要搜尋的是MongoDB.Driver

這里創建了一個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完成

窗體程序部分

Imports MongoDB.BsonImports MongoDB.DriverPublic 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 SubEnd Class

功能描述:通過點擊圖片,加載所有的vbtest文檔記錄,combobox1專門用于顯示ObjectId,可以通過ToString()方法轉換為普通字符串

隨著下拉框ObjectId的改變,richtext1控件加載vbtest實體類對應記錄的Content字段,可以更改字段內容后點擊更新提交按鈕完成文檔的UpdateOneAsync操作

總結

到此這篇關于vs2019 下用 vb.net編寫窗體程序連接 mongodb4.2的文章就介紹到這了,更多相關vs2019連接 mongodb4.2內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91麻豆桃色免费看| 国产午夜精品全部视频播放| 在线观看欧美视频| 国产成人精品在线视频| 狠狠色狠色综合曰曰| 欧美在线视频播放| 亚洲丝袜一区在线| 日韩高清人体午夜| 这里只有精品在线播放| 亚洲美女av电影| 成人看片人aa| 日韩av片永久免费网站| 视频直播国产精品| 亚洲a区在线视频| 在线观看国产精品91| 日韩福利在线播放| 日韩在线免费视频观看| 日韩美女福利视频| 久久久av免费| 亚洲精品视频网上网址在线观看| 国产精品第二页| 欧美在线免费视频| 亚洲自拍在线观看| 亚洲男人天堂视频| 国产在线不卡精品| 亚洲精品720p| 欧美日韩亚洲视频| 久久久久久亚洲精品| 国产91精品视频在线观看| 国产成人精品视频在线| 91精品国产高清自在线| 久久久久北条麻妃免费看| 色与欲影视天天看综合网| 亚洲国产欧美在线成人app| 久久久女女女女999久久| 国产精品成人v| 亚洲天堂av电影| 2018国产精品视频| 夜夜嗨av色综合久久久综合网| 国产一区玩具在线观看| 国产亚洲精品成人av久久ww| 亚洲精品mp4| 欧美激情亚洲自拍| 国产精品久久久久久婷婷天堂| 亚洲毛片一区二区| 欧美精品一区二区三区国产精品| 日韩电视剧免费观看网站| 日韩有码在线观看| 国产精品中文字幕在线| 亚洲丝袜在线视频| 精品露脸国产偷人在视频| 91亚洲精品久久久久久久久久久久| 国产午夜精品全部视频在线播放| 久久亚洲精品毛片| 国产成人福利夜色影视| 亚洲精品网站在线播放gif| 国产成人精品久久亚洲高清不卡| 国产一区二区激情| 久久精品电影网| 国产不卡在线观看| 欧美性黄网官网| 在线精品播放av| 久久天堂av综合合色| 午夜精品福利电影| 国产精品久久久久久av福利软件| 91在线免费视频| 国产精品欧美久久久| 国产精品精品一区二区三区午夜版| 亚洲女人天堂视频| 国产97色在线|日韩| 国产精品人人做人人爽| 欧美日韩在线视频首页| 欧美另类交人妖| 亚洲三级av在线| 这里只有精品在线观看| 国产精品视频一| 欧美一区二区三区免费视| 欧美午夜丰满在线18影院| 亚洲精品久久久久中文字幕欢迎你| 欧美日韩国产成人在线| 亚洲综合色激情五月| 91热精品视频| 精品成人69xx.xyz| 亚洲www永久成人夜色| 2019中文字幕在线观看| 亚洲欧美精品一区| 色yeye香蕉凹凸一区二区av| 777午夜精品福利在线观看| 日韩精品免费在线播放| 亚洲性生活视频在线观看| 91精品视频免费| 久久久亚洲国产天美传媒修理工| 亚洲免费电影在线观看| www.欧美视频| 超薄丝袜一区二区| 国产做受高潮69| 成人伊人精品色xxxx视频| 亚洲加勒比久久88色综合| 伊人久久大香线蕉av一区二区| 欲色天天网综合久久| 国产成人黄色av| 国产精品自拍网| 亚洲激情 国产| 国产精品热视频| 一区二区三区四区视频| 国产这里只有精品| 亚洲区免费影片| 国产免费一区二区三区香蕉精| 亚洲精品美女在线观看播放| 成人欧美一区二区三区在线湿哒哒| 欧美电影在线观看完整版| 精品视频—区二区三区免费| 中文字幕亚洲综合久久筱田步美| 人妖精品videosex性欧美| 欧美极品少妇全裸体| 精品久久久久人成| 日韩中文有码在线视频| 日本在线观看天堂男亚洲| 在线观看中文字幕亚洲| 92裸体在线视频网站| 久久久久久久国产精品| 91精品久久久久久久久久久久久| 91精品视频一区| 日本伊人精品一区二区三区介绍| 成人久久久久久| 福利视频一区二区| 成人午夜高潮视频| 中日韩午夜理伦电影免费| 欧美成人第一页| 欧美电影免费观看高清| 福利一区视频在线观看| 国产日韩一区在线| 欧美电影在线观看网站| 国产91精品在线播放| 神马久久桃色视频| 国产精品女视频| 欧美激情中文网| 国产精品久久久久免费a∨| 亚洲第一页中文字幕| 国产日韩欧美综合| 一区二区av在线| 韩国欧美亚洲国产| 久久久精品一区| 成人美女av在线直播| 国产精品高潮呻吟久久av野狼| 亚洲第一区在线观看| 国产综合视频在线观看| 国产亚洲一区二区精品| 亚洲欧美中文在线视频| 91在线视频导航| 911国产网站尤物在线观看| 国产精品99一区| 国产精品视频xxx| 色综合久综合久久综合久鬼88| 日韩成人在线视频网站| 2020欧美日韩在线视频| 精品国产自在精品国产浪潮| 国产精品激情自拍| 少妇高潮久久久久久潘金莲| 久久99精品国产99久久6尤物| 国产精选久久久久久| 亚洲奶大毛多的老太婆| 草民午夜欧美限制a级福利片| 久久久久久久电影一区|