不能通过MongoAPI在CosmosDB上使用.find(),也不能通过Azure Portal" Data Explorer",只有通过documentDB API才能正常工作

时间:2017-12-15 08:29:04

标签: mongodb azure-cosmosdb

我通过Robo3t和Azure Portal从MongoAPI收到500内部服务器错误。

我已经多次删除了我的数据库和集合,插入了一些示例记录并尝试在Azure门户"数据资源管理器"或通过MongoDB API Robo3t,我完全无法查看所有记录。我能够查看记录的唯一方法来自直接的documentDB .query()' Select *'。

通过Robo3t,奇怪的是我能够完美连接,查看统计数据,插入记录并查看我插入的特定记录(来自Robo3t),但完全无法查看所有记录或使用.find({})。几天前所有这一切都很好。我已经在多个网络上的多个设备上尝试过此操作。

Document DB主机通过443端口连接,而Robo3t通过10255端口连接。我无法以不同的方式连接到我注意到的任何API。

我通常是通过documentDB api插入的。

以下是一些截图:

db.getCollection('test').stats()

Inserting 2 of the same record

finding those 2 records

db.getCollection('test').find({})

Getting documents via documentDB query via node.js successfully pulling all records

Trying to find one of those documentDB query objects in Robot3t

Again

Unable to get anything via Data Explorer

1 个答案:

答案 0 :(得分:1)

问题是您提到的问题,您正在使用DocumentDB API将文档插入Mongo API帐户。 Mongo API帐户仅适用于启用Mongo的客户端/ SDK。

Portal和第三方应用程序失败是因为他们使用MongoDB协议来读取文档,这些通过DocumentDB API存储的文档没有所需的MongoDB属性(例如,“_ id”)。当您使用Mongo客户端插入文档时,客户端将确保没有丢失所需的MongoDB属性(并且在“_id”标识符的情况下,自动生成它)。

运行sorts.ascendent(list); System.out.println(list); 命令时,驱动程序遇到的文档无法满足所需的MongoDB属性(使用DocumentDB API插入的属性)并中止。

如果要使用DocumentDB API进行交互,请使用SQL帐户。如果您的应用程序使用MongoDB协议并且您需要使用Mongo帐户,请使用启用Mongo的客户端存储文档。

another SO question上的类似案例。

要解决您的问题,请重新创建集合,并仅使用Mongo SDK使用Mongo API客户端/应用程序存储文档。