如何将 Azure CosmosDB 模拟器与 MongoDB API 一起使用?

How do I use the Azure CosmosDB Emulator with the MongoDB API?

我使用 Microsoft Azure Comos 模拟器 2.11.11.0 版。我用命令行启动它:

CosmosDB.Emulator.exe /EnableMongoDbEndpoint=3.6

如果我将我的应用程序连接到 MongoDB 端点,我会收到以下错误:

com.mongodb.MongoCommandException: Command failed with error 1 (InternalError):
 '[ActivityId=64bdb726-f138-4025-8d5b-ca23bbda384c] Internal error.' on server localhost:10255.
 The full response is {"ok": 0.0, "errmsg": "[ActivityId=64bdb726-f138-4025-8d5b-ca23
bbda384c] Internal error.", "code": 1, "codeName": "InternalError"}

这个错误是什么意思?我还需要做什么才能使用 MongoDB API?

第一个写入命令失败:

'{"createIndexes": "fs.files", "indexes": [{"key": {"filename": 1}, "name": "filename_1", "ns": "admin.fs.files"}], "$db": "admin", "lsid": {"id": {"$binary": {"base64": "lFHKYPJ0Rq+ip587pl8YPQ==", "subType": "04"}}}, "$readPreference": {"mode
": "primaryPreferred"}}'

它是从简单的 Java 行生成的:

collection.createIndex( new BasicDBObject( FILENAME, 1 ) );

PS:对于 MongoDb 端点 3.2,这是有效的。肯定是模拟器有问题

使用模拟器 Mongo API 3.6 必须显式创建集合。使用原始 MongoDB 和 Mongo API 端点 3.2 如果创建索引或保存数据,将间接创建集合。