目前,我正在使用文件名来查询来自MongoDB GridFS
的数据。
现状
我使用GridFSBucket
和UploadFromBytesAsync
将数据上传到MongoDB,该ObjectId
返回filename
以引用数据并以UploadFromBytesAsync
作为参数。
问题
DownloadAsBytesAsync
的对话是GridFS
,应该用于查询来自ObjectId
的数据。但是,此方法仅接受filename
而不接受唯一 UploadFromBytesAsync
,这也是在使用filename
时传递的。但我想使用GridFS ObjectId
来查询数据。
可能的解决方案
我的想法是,创建一个存储GridFS filename
和filename
的集合来映射它们。因此,在查询数据时,我将在集合中搜索ObjectId
,然后使用GridFS
从filename
获取字节。 GridFS
属性也会获得一个索引。
或者我应该使用唯一filename
直接从filename
查询?并且DownloadAsBytesByName
索引的是?
修改<!/强>
哦,我认为使用@assessmentsGrid.GetHtml(
tableStyle: "grid",
headerStyle: "gridHeader",
alternatingRowStyle: "gridAlt",
footerStyle: "gridFooter",
columns:
assessmentsGrid.Columns(assessmentsGrid.Column(null, null, format: @<text><a href="~/Admin/Assessments/AssessmentDetails/@item.assId">Details</a></text>),
assessmentsGrid.Column("assId", "ID#"), assessmentsGrid.Column("Date", "Date",format: @<text>@((item.Date == null ||item.Date.Year == 1900) ? "" : item.Date.ToString("d MMM yyyy"))</text>),
assessmentsGrid.Column("Title", "Title"),
assessmentsGrid.Column("Forename", "Forename"),
assessmentsGrid.Column("Surname", "Surname"),
assessmentsGrid.Column("LocationName", "Location"),
assessmentsGrid.Column("ActivityType", "Activity Type"),
assessmentsGrid.Column("Q01", "Q01"),
assessmentsGrid.Column("Q02", "Q02"),
assessmentsGrid.Column("Q03", "Q03"),
assessmentsGrid.Column("Q04", "Q04"),
assessmentsGrid.Column("Q05", "Q05"),
assessmentsGrid.Column("Q06", "Q06"),
assessmentsGrid.Column("Q07", "Q07"),
assessmentsGrid.Column("Q08", "Q08"),
assessmentsGrid.Column("Q09", "Q09"),
assessmentsGrid.Column("Q10", "Q10"),
assessmentsGrid.Column("Q11", "Q11"),
assessmentsGrid.Column("Q12", "Q12"),
assessmentsGrid.Column("Q13", "Q13"),
assessmentsGrid.Column("Q14", "Q14")
)
)
可以解决问题。
非常感谢你!
答案 0 :(得分:1)
只要文件名是唯一的,您就可以按文件名使用获取。
为确保只有一个文件,您可以使用存储选项:覆盖
您可以在fs集合上创建索引以包含fileName字段。
- 编辑 与覆盖loos的调用如:
IntentFilter intentfilterState = (IntentFilter)new IntentFilter();
intentfilterState.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
BroadcastReceiver nsca = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//your code goes here
}
}
_context.registerReceiver(nsca, intentfilterState);