我通过JAVA中springdata的GridFsTemplate使用MongoDB API for DocumentDB。
我在尝试使用MongoDB的GridFS部分来管理大文件时遇到错误。
我能够创建一个文件(我认为)并找到它的元数据,但我无法检索文件内容。返回以下错误:
Error: error: {
"_t" : "OKMongoResponse",
"ok" : 0,
"code" : 8,
"errmsg" : "The value '/media/7hsUAJOI2QsBAAAAAAAAAEeWwrcB' specified for query '$resolveFor' is invalid.\r\nActivityId: a68945e8-0000-0000-0000-000000000000",
"$err" : "The value '/media/7hsUAJOI2QsBAAAAAAAAAEeWwrcB' specified for query '$resolveFor' is invalid.\r\nActivityId: a68945e8-0000-0000-0000-000000000000"
}
我使用Robomongo并尝试检查fs.chunks集合时遇到同样的错误。
我说我认为我可以创建该集合的原因是因为在Azure的Web界面中使用Browse功能,似乎fs.chunks只有一个记录而不是很多块。所以也许存储就是问题。
如果使用标准MongoDB,所有这些都可以正常工作。
这是保存文件的代码,无错误地完成。
gridFsTemplate.store( content, filename, contentType, metadata );
以下是找到它并获取内容的代码
//this works
GridFSDBFile data = gridFsTemplate.findOne( query );
ByteArrayOutputStream out = new ByteArrayOutputStream();
if ( data != null )
{
//this results in Exception with the same message as the error above
data.writeTo( out );
}
答案 0 :(得分:1)
第三方blog介绍了DocumentDB和MongoDB之间的差异,请注意Binary Large Object (BLOB) Storage
部分。现在,Azure DocumentDB已得到扩展和扩展。升级为Azure Cosmos DB,这是一个多模型数据库,包括文档,键值,图形,而不是BLOB。所以我认为你应该只考虑使用DocumentDB或Cosmos DB via MongoDB API作为JSON商店系统。如果要将存储用于文件,请考虑使用Azure Blob存储。
希望它有所帮助。