Azure DocumentDB的MongoAPI中的GridFS支持

时间:2017-05-10 19:25:30

标签: azure-cosmosdb gridfs

我通过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 );
}

1 个答案:

答案 0 :(得分:1)

第三方blog介绍了DocumentDB和MongoDB之间的差异,请注意Binary Large Object (BLOB) Storage部分。现在,Azure DocumentDB已得到扩展和扩展。升级为Azure Cosmos DB,这是一个多模型数据库,包括文档,键值,图形,而不是BLOB。所以我认为你应该只考虑使用DocumentDBCosmos DB via MongoDB API作为JSON商店系统。如果要将存储用于文件,请考虑使用Azure Blob存储。

希望它有所帮助。