【问题标题】:GridFS MongoDB retrieve metadata when downloading filesGridFS MongoDB 在下载文件时检索元数据
【发布时间】:2020-08-12 13:55:08
【问题描述】:

我正在尝试使用 GridFs 上传和下载文档。

var mongoClient = new MongoClient("mongodb://localhost:27017");
var db = mongoClient.GetDatabase("TestDB");

Stream source = new MemoryStream(Content.ToBson());

//Initializing GdridFS conection
GridFSBucket bucket = new GridFSBucket(db);
var options = new GridFSUploadOptions
{
    ChunkSizeBytes = 64512, // 63KB
    Metadata = new BsonDocument
    {
        { "A", "1" },
        { "booleanValue", true }
    } 
};
// file name and source content we are receiving fom post man.
var id = await Bucket.UploadFromStreamAsync("FileName", source, options);  

到这里一切都很好。现在我想根据文件名和 id 下载文件。 所以我用这个方法。

var x = Bucket.DownloadAsBytesAsync(fileName);

现在,当我下载它时,我想知道有关上传时存在的文件的所有信息。就像我想知道我在上传时存储的元数据信息还有文件名,上传时存在的每条信息的id,但我不知道在下载所有信息后如何获取它。 任何帮助将不胜感激。 问候

【问题讨论】:

  • 您应该始终将版本属性添加到数据库中,以便跟踪版本。
  • @jdweng:你知道我在下载文件时如何获取所有信息吗?
  • 您没有下载文件您正在获取一个包含表格的数据库,您可以将信息放入表格中。
  • 感谢您的回复。您能给我一个小例子或一个我可以理解的链接吗?我是新手,所以对这个话题了解不多
  • 您可以使用元数据。请参阅:docs.mongodb.com/manual/core/gridfs

标签: c# database mongodb gridfs data-storage


【解决方案1】:

【讨论】:

  • @感谢您的回复。现在我了解了我们如何过滤数据。我还有一个关于过滤的问题。假设我想根据两个因素进行过滤。我想根据 DocType(存储在元数据中)和对象 id 来获取。 var filter = Builders.Filter.And(Builders.Filter.Eq(x => x.Metadata.GetElement("DocType").ToString(), docType.ToString()), Builders .Filter.Eq(x => x.Id.ToString(), docId));我已经按照上面的方法编写了过滤器,但没有得到正确的结果。请您指出我做错了什么。
  • 您可以像查询任何其他集合一样查询文件集合。我不知道 c# 语法,因为我不使用 .net。
猜你喜欢
  • 2016-02-14
  • 2016-01-01
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 2017-12-31
  • 1970-01-01
  • 2014-05-25
  • 2012-05-04
相关资源
最近更新 更多