将文件名和 objectid 元组存储在集合中或使用文件名直接查询
Store filename and objectid tuple in collection or query direct using the filename
目前我正在努力使用文件名从 MongoDB GridFS
中查询数据。
现状
我正在使用 GridFSBucket
和 UploadFromBytesAsync
将数据上传到 MongoDB,其中 returns 和 ObjectId
用于引用数据并采用filename
作为参数。
问题
UploadFromBytesAsync
的反义词是DownloadAsBytesAsync
,用来查询GridFS
的数据。但是这个方法只接受 ObjectId
而不是 unique filename
,它在使用 UploadFromBytesAsync
时也会被传递。但是我想使用 filename
.
查询数据
可能的解决方案
我的想法是,创建一个存储 GridFS ObjectId
和 GridFS filename
的集合来映射它们。所以在查询数据时,我会在集合中搜索filename
,然后使用ObjectId
从GridFS
中获取字节。 filename
属性 也会得到一个索引。
或者我应该使用唯一的 filename
直接从 GridFS
查询? filename
的索引是不是?
编辑!
哦,我认为使用DownloadAsBytesByName
可以解决问题。
非常感谢!
只要文件名是唯一的 - 您可以通过文件名使用 get。
为确保只有一个文件,您可以使用存储选项:OverWrite
您可以在 fs 集合上创建索引以包含 fileName 字段。
-- 编辑
覆盖厕所的电话,如:
_db.GridFS. Upload(OverWrite(fileName, binaryStream))
目前我正在努力使用文件名从 MongoDB GridFS
中查询数据。
现状
我正在使用 GridFSBucket
和 UploadFromBytesAsync
将数据上传到 MongoDB,其中 returns 和 ObjectId
用于引用数据并采用filename
作为参数。
问题
UploadFromBytesAsync
的反义词是DownloadAsBytesAsync
,用来查询GridFS
的数据。但是这个方法只接受 ObjectId
而不是 unique filename
,它在使用 UploadFromBytesAsync
时也会被传递。但是我想使用 filename
.
可能的解决方案
我的想法是,创建一个存储 GridFS ObjectId
和 GridFS filename
的集合来映射它们。所以在查询数据时,我会在集合中搜索filename
,然后使用ObjectId
从GridFS
中获取字节。 filename
属性 也会得到一个索引。
或者我应该使用唯一的 filename
直接从 GridFS
查询? filename
的索引是不是?
编辑!
哦,我认为使用DownloadAsBytesByName
可以解决问题。
非常感谢!
只要文件名是唯一的 - 您可以通过文件名使用 get。
为确保只有一个文件,您可以使用存储选项:OverWrite
您可以在 fs 集合上创建索引以包含 fileName 字段。
-- 编辑 覆盖厕所的电话,如:
_db.GridFS. Upload(OverWrite(fileName, binaryStream))