You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:50:31