如何在VB.NET中获取MongoDB GridFS文件的元数据
获取MongoDB GridFS文件元数据(.NET Driver 2.17.1)
针对你使用MongoDB .NET Driver 2.17.1版本的GridFS组件,可通过以下两种方式获取文件的自定义元数据:
1. 通过文件名查询元数据
如果需要根据文件名定位文件,可构建过滤条件查询文件信息,进而提取元数据:
' 初始化GridFSBucket(与上传时的配置一致) Dim gridFSBucketOptions As GridFSBucketOptions = New GridFSBucketOptions() With { .BucketName = "Datamodules" } Dim bucket = New GridFSBucket(mongoDB, gridFSBucketOptions) ' 构建文件名过滤条件 Dim fileName = "DMC-JA-A-00-00-00-00A-005A-A_00101.SGM" Dim filter = Builders(Of GridFSFileInfo).Filter.Eq(Function(f) f.Filename, fileName) ' 查询文件列表(若存在同名文件,需根据业务逻辑选择对应项) Dim fileInfos = bucket.Find(filter).ToList() If fileInfos.Count > 0 Then ' 获取第一个匹配文件的元数据 Dim metadata = fileInfos(0).Metadata ' 读取自定义元数据字段 Dim dmc = metadata("DMC").AsString Dim issno = metadata("ISSNO").AsString Dim inwork = metadata("Inwork").AsString ' 此处可添加元数据的业务处理逻辑 End If
2. 通过文件ID查询元数据
如果上传时保存了文件的_id(即你代码中的id变量),可直接通过ID精准查询:
同步方式
' 假设savedFileId为上传时获取的文件ID Dim filter = Builders(Of GridFSFileInfo).Filter.Eq(Function(f) f.Id, savedFileId) Dim fileInfo = bucket.Find(filter).FirstOrDefault() If fileInfo IsNot Nothing Then Dim metadata = fileInfo.Metadata ' 读取自定义元数据字段... End If
异步方式
' 异步场景下使用GetFileInfoAsync方法 Dim fileInfo = Await bucket.GetFileInfoAsync(savedFileId) If fileInfo IsNot Nothing Then Dim metadata = fileInfo.Metadata ' 读取自定义元数据字段... End If
说明
GridFSFileInfo对象包含了文件的所有内置属性(如length、uploadDate)和自定义的Metadata字段,通过Metadata属性可直接访问你上传时设置的DMC、ISSNO、Inwork等值。
内容的提问来源于stack exchange,提问作者BlasterXXL
相关产品推荐
相关产品推荐

