Azure cosmosdb Azure DocumentDB MongoAPI中的GridFS支持

Azure cosmosdb Azure DocumentDB MongoAPI中的GridFS支持,azure-cosmosdb,gridfs,Azure Cosmosdb,Gridfs,我通过JAVA中springdata的GridFsTemplate使用DocumentDB的MongoDB API 我在尝试使用MongoDB的GridFS部分管理大型文件时出错 我可以创建一个文件(我想)并找到它的元数据,但我无法检索文件内容。返回以下错误: Error: error: { "_t" : "OKMongoResponse", "ok" : 0, "code" : 8, "errmsg" : "The value '/media/7hsUAJOI2

我通过JAVA中springdata的GridFsTemplate使用DocumentDB的MongoDB API

我在尝试使用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界面中的浏览功能,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 );
}
有第三方介绍了DocumentDB和MongoDB之间的区别,请注意
二进制大对象(BLOB)存储
部分。现在,Azure DocumentDB已经扩展和升级为多模型数据库,包括文档、键值、图形,而不是BLOB。所以我认为您应该只考虑使用或作为JSON存储系统。如果您想使用存储文件,请考虑Azure BLB存储。< /P>
希望有帮助。

谢谢。但是,支持和使用MongoDB API的想法是允许开发人员在不更改代码的情况下同时支持这两种DBs。原因有很多。顺便说一下,使用DocumentDB Emulator时不会发生上述错误。所以,也许模拟器就在前面,修复就要来了……我会接受你的回答,因为我无法更改任何可以修复该问题的配置。基本上它还没有得到支持。你提供了另一种选择。再次感谢。是否有一个支持列表显示了通过Mongo DB在Cosmos DB上不支持的内容?对我来说,这个问题最糟糕的部分,也是我在使用GridFS的应用程序中遇到的,是Cosmos DB假装它成功地存储了文件,它存储了元数据,然后实际上没有存储文件的内容。至少在调用distinct方法时,API会返回一个不成功的结果。我们是否可以清楚地看到Cosmos DB支持和不支持Mongo API的哪些部分?还有进一步的支持吗?@jbteros您说emulator可以工作,但DocumentDB不能工作。我的感觉是:仿真器没有什么特别的功能,所以它可以正常工作,因为GridFS更像是一种基于普通MongoDB API的模式。然而,Azure DocumentDB似乎有一些新的智能逻辑,它试图将GridFS操作重新映射到DocumentDB附件API(因此是“/media/7hsuajoi2qsbaaaaaaaewwrcb”路径),但失败了。