加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

VB.NET读写MongoDB

发布时间:2020-12-17 07:44:23 所属栏目:百科 来源:网络整理
导读:VB.NET读写MongoDB MongoDB是一个基于分布式文件存储的数据库。由C++编写,旨在为WEB应用程序提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富,最像关系数据库的。他支持的数据结构

VB.NET读写MongoDB

MongoDB是一个基于分布式文件存储的数据库。由C++编写,旨在为WEB应用程序提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。他所支持的查询语言非常强大,语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,还支持对数据建立索引。

MongoDB很好的实现了面向对象的思想,在MongoDB中每一条记录都是一个Document对象。他最大的优势在于所有的数据持久操作都无需开发人员手动编写SQL语句,直接调用方法就可以轻松实现CRUD操作。

Imports MongoDB.Driver.Builders
Imports MongoDB.Driver
Imports MongoDB.Bson
初始化连接所要操作的文档集合
'所要连接的DB地址
Dim connectionString As String = "mongodb://localhost"
'所要连接的DB名称
Dim databaseString As String = "DBname"
Dim mongoClient As MongoClient = New MongoClient(connectionString)
Dim mongoServer As MongoServer = mongoClient.GetServer()
Dim mongoDatabase As MongoDatabase = mongoServer.GetDatabase(databaseString)
'要进行操作的集合
Dim dbGather As MongoCollection(Of BsonDocument) = mongoDatabase.GetCollection(Of BsonDocument)("DBgather")

①新建文档及文档集合

如果数据库中没有插入的文档所在的集合,则会新建文档集合

Dim bsonDoc As BsonDocument = New BsonDocument
bsonDoc("sNo") = "2102040819920120"
bsonDoc("scNo") = "88888888"
franswerImage.Insert(bsonDoc)
②条件检索

检索一条数据

Dim bsonQuery = New QueryDocument()
      bsonQuery("_id") = New ObjectId("55cd5917522e341f20a3cbed")
bsonQuery("scNo") = "88888888"
Dim oneData As BsonDocument = dbGather.FindOne(bsonQuery)
 
 

检索所有数据

Dim allImage As MongoCursor(Of BsonDocument) = dbGather.Find(bsonQuery)
For Each bson In allImage
      Dim studentNo as String  =  bson("scNo")
Next
or
For Each bson In dbGather.Find(stdchoiceQuery)
	Dim studentNo as String  =  bson("scNo")
Next
③模糊检索

如果用到正则表达式,则需引用

Imports System.Text.RegularExpressions
‘Mongodb中模糊检索以"210302"开头的sNo字段
Dim bsonQuery = New QueryDocument()
Dim scNStr As String = "210302"
Dim scNQuery As BsonElement = New BsonElement("sNo",New Regex("^" + scNStr + ".*$"))
bsonQuery.Add(scNQuery)
Dim oneData As BsonDocument = dbGather.FindOne(bsonQuery)
模糊检索,并删除符合条件的文档
Dim bsonQuery As New QueryDocument
bsonQuery("sNo") = New BsonRegularExpression("/^" + "210302" + "/")
dbGather.Remove(bsonQuery)
检索文档中是否存在该字段
Dim bsonDoc As BsonDocument = New BsonDocument
bsonDoc.Add("$exists",True)
answerSheetErrorQuery.Add("sNo",bsonDoc)
$in的使用
Dim bsonDoc As BsonDocument = New BsonDocument
Dim bsArray As BsonArray = New BsonArray()
For i = 33 To 47
      bsArray.Add(i.ToString)
Next
bsonDoc.Add("$in",bsArray)
stdscoreQuery.Add("sNo",bsonDoc)

检索两时间点之间的数据
‘通过DateTimePicker获取日期时间
Dim dateTo As Date = DateTimePicker1.Value
Dim dateFromstr As String = DateTimePicker2.Value.ToString.Split(" ")(0)
‘去掉DateTimePicker2的时间,只留日期
Dim dateFrom As Date = New DateTime(dateFromstr.Split("/")(0),dateFromstr.Split("/")(1),dateFromstr.Split("/")(2),0)
Dim schoolNo As String = TextBox1.Text 
Dim testNo As String = TextBox2.Text
‘检索在dateFrom与dateTo之间的"UDT"字段
Dim stdscoreQuery As New QueryDocument() 
Dim fDate As BsonDocument = New BsonDocument("$lte",dateFrom) 
Dim tDate As BsonDocument = New BsonDocument("$gte",dateTo)
Dim dateQuery As New QueryDocument() 
Dim df As BsonElement = New BsonElement("$lte",dateFrom)
dateQuery.Add(df)
Dim dt As BsonElement = New BsonElement("$gte",dateTo)
dateQuery.Add(dt)
stdscoreQuery.Add("UDT",dateQuery) 
Dim errorQuestion As MongoCursor(Of BsonDocument) = stdscore.FindOne(stdscoreQuery)

④批量更新,批量插入

有时候需要更新一组多条数据,就可以用批量更新批量插入

批量插入:

Dim bsonList As List(Of BsonDocument) = New List(Of BsonDocument)
For i = 0 to 100
Dim temp As BsonDocument = New BsonDocument
    temp("score") = 0
    temp("schoolNo") = "88888888"
    bsonList.Add(temp)
Next
Dim scoreQuery As New QueryDocument
scoreQuery("tId") = "asd12ewqasd13eqwsdadsx"
scoreQuery("sN") = "888888"
socore.Remove(scoreQuery)
socore.InsertBatch(bsonList)

批量更新:

'批量更新_id = bscanTempIdBsonArray中的数据的status为4
Dim statusUpdate As New UpdateDocument("$set",New BsonDocument("status","4"))
Dim upDateQuery As New QueryDocument
Dim temp As BsonDocument = New BsonDocument

Dim bscanTempIdBsonArray As BsonArray = New BsonArray()
bscanTempIdBsonArray.Add(New ObjectId("55fbd4bf522e341f74b4b960"))
bscanTempIdBsonArray.Add(New ObjectId("55fbd4bf522e341ac4b4bf62"))
bscanTempIdBsonArray.Add(New ObjectId("55fbd4bf522ede1f74b4bs61"))
bscanTempIdBsonArray.Add(New ObjectId("55fbd4bf522e342s74b4b910"))
temp.Add("$in",bscanTempIdBsonArray)
upDateQuery.Add("_id",temp)
bscantemp.Update(upDateQuery,statusUpdate,UpdateFlags.Multi)






暂时就想到这么多~


??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读