问题标签 [azure-cosmosdb-mongoapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
190 浏览

azure-cosmosdb - CosmosDB API for Mongo 对待多键唯一索引的方式与 MongoDB 不同

我正在尝试将 Azure CosmosDB 放入最初使用 MongoDB 的项目中。我遇到了一个问题,即唯一索引在 CosmosDB 和 MongoDB 中的处理方式不同,我找不到任何建议我应该看到问题的文档。

为了说明这一点,我使用mongocli 连接到我的 CosmosDB 和我的 MongoDB(版本 3.6)并运行以下命令来创建一个集合,定义一些唯一的多键索引,然后插入一些文档:

以上适用于 MongoDB 3.6。插入第二个文档时,它会针对 CosmosDB 实例生成错误,因为...

它似乎在检查study是唯一的,而不是两者的组合studywithidstudywith path

这是 CosmosDB 的 MongoDB API 的已知限制吗?或者有什么我可以做的,没有代码更改,会给我预期的结果?

仅供参考,我已经为 CosmosDB 打开了以下两个预览功能:

  • 启用“聚合管道”
  • 启用“MongoDB 3.4 有线协议(版本 5)”
0 投票
1 回答
1170 浏览

azure-cosmosdb - 慢速 CosmosDB Mongodb 查询

我正在使用 MongoDB api 访问 Azure 上的 CosmosDb。我收集了几千份文件。

它们的形状是这样的:

我需要在 $in 查询中使用可能大量的“id”来查询文档。查询很简单,

我有一个非唯一索引(可能应该是唯一的):

结果是包含 1000 个项目的查询需要 20 秒或更长时间才能返回。如果我只是简单地获得所有文件:

db.MyCollection.find({});

结果不到一秒钟即可返回。

此外,如果我对本地本地 Mongo 实例运行相同的测试,则两个查询都会在一秒钟内返回。

我在 Azure/CosmosDb 方面缺少什么可能导致所有这些减速?

0 投票
8 回答
20076 浏览

python - Python3 上 Pymongo 的 SSL 握手问题

尝试连接到 Azure CosmosDB mongo 服务器会导致 SSL 握手错误。

我正在使用Python3Pymongo连接到我的 Azure CosmosDB。如果我使用 Python27 运行代码,则连接工作正常,但在使用 Python3 时会导致以下错误:

运行它Python3会导致以下错误:

pymongo.errors.ServerSelectionTimeoutError: SSL 握手失败: backendstore.documents.azure.com:10255: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:749)

这是我运行相同代码时的成功输出Python27

数据库服务器状态: { "_t": "OKMongoResponse", "ok": 1 } Collection(Database(MongoClient(host=['backend.documents.azure.com:10255'], document_class=dict, tz_aware=False, connect =True, ssl=True, replicaset='globaldb'), u'result_DB'), u'file_result')

0 投票
0 回答
528 浏览

azure - Azure cosmos DB 文档大小约为 30KB 时速度慢

我们有一个具有以下特征的 azure cosmos DB:

  1. 大约2M文件。

  2. 每个文件大约30KB。

当我们使用 Java mongo API ( org.mongodb:mongodb-driver-sync:3.9.1)查询 cosmos DB

使用分片键检索 4000 个文档(在我的理解中应该是最快的)需要 2 分钟以上。

是普通的吗?

我应该期望从 API 获得这些时间吗?

示例代码:

似乎客户端以大约 100 项的批量检索文档。有没有办法增加批量大小?

使用 Azure 门户时,门户中的界面对调用进行分页并仅检索前 100 个文档,然后您必须单击“带来更多”以获取更多文档。似乎对于 azure 界面,检索每个批次也需要大约 2 秒

我有哪些选择可以让它更快地工作?谢谢

0 投票
2 回答
1899 浏览

azure - 如何使用 Mongo API 在共享吞吐量 cosmosdb 中创建集合

我有一个预配了数据库级吞吐量的 Azure CosmosDb 数据库。我们正在对这个 Cosmos 实例使用 MongoDB API。共享吞吐量模型要求所有集合都指定一个分区键,这似乎阻止了除了 Azure 门户或官方 Azure Cosmos SDK 之外的几乎所有工具都能够创建集合。例如,在 Robo 3T 中,尝试创建集合会导致以下错误:

未能创建集合“mycollection”。

错误:共享吞吐量集合应该有一个分区键

尝试通过猫鼬(类似于此问题)或其他工具创建集合时会发生相同的错误。

所以我想操作性问题归结为: 有没有办法通过 MongoDb API将所需的 partitionKey 传递给 CosmosDb,以便集合创建成功?

0 投票
0 回答
42 浏览

asp.net-core-2.0 - Azure cosmosdb mongo api error ion asp.net core

I am getting the below error when I try to connect to Azure cosmosdb mongo api from my asp.net core :

Error: TimeoutException: A timeout occured after 30000ms selecting a server using CompositeServerSelector

Code used:

0 投票
1 回答
194 浏览

node.js - 如何使用 mongoose 和 Node.js 仅检索 Azure Cosmos 中的子对象?

我正在使用带有 Mongodb API 的 Azure cosmos db。我也使用猫鼬来创建模式并在数据库中创建新文档。我也在使用 Node.js。

在这一点上,我正在考虑使用嵌入文档的一对多关系。

数据结构是这样的:

我只想检索“sensor1”对象,而不是来自父对象的任何内容。

使用查询我只能检索整个“locality1”对象及其所有底层子部分和传感器。在更大的范围内,这是不必要的大量数据。

到目前为止,这是我的查询。

我很感激任何提示!:)

0 投票
1 回答
267 浏览

mongoose - CosmosDB 与 mongodb 和 mongoose 的连接

我正在尝试通过猫鼬连接到我的数据库,如下所示:

我收到一条错误消息:

MongoError:数据库名称必须是字符串

现在,如果我删除useNewUrlParser: true, 我得到:

错误:密码包含非法的未转义字符

我显然不想删除 useNewURLParser,但我认为这很奇怪。

0 投票
3 回答
4761 浏览

azure-cosmosdb - 如何为 Mongo API 禁用 Cosmos DB 分片键

我正在将一个非常简单的 mongo DB(100 个条目)迁移到 Azure Cosmos DB。我的应用基于 node-js,所以我使用 mongoose 作为映射器。在真正简单之前,定义模式,查询集合,完成。

现在在 cosmos db 中设置集合时,有人问我有关分区键和分片键的问题。第一个我可以忽略,但最后一个是必需的。快速阅读该主题并理解它是一种分区(同样,我不需要也不想要),我只是选择 _id 作为分片键。

当然有些东西是行不通的。

虽然查找查询工作得很好。更新或插入记录失败,错误如下:

MongoError:命令中的查询必须针对单个分片键

Cosmos db(使用 mongo API)被广告给我作为替代品。显然情况并非如此,因为我从不需要担心 mongo 中的这些事情,尤其是对于这样一个小规模的应用程序/数据库。

那么,我可以以某种方式禁用分片吗?或者,我如何定义分片键而不用担心它?

干杯

0 投票
1 回答
473 浏览

azure - golang COSMOS DB,快速入门,缺少环境变量 AZURE_DATABASE

更新:

  1. 在 init 函数中使用的 GetEnvVarOrExit 已被弃用。(但可能仍然有效)

2.(这行得通)快速的解决方案是简单地以这种方式编辑 init() 函数......


  1. 第三个选项是设置环境变量,这是指令要求做的。但是上面的第 2 项有效。我没有使用这个选项。

对我有用的解决方案是将上面的 Init() 函数更改为硬编码 Azure/Cosmos 凭据。


原始问题

我正在尝试为 GoLang 和 CosmosDB 做 MS Azure 快速入门。我有一个 CosmosDB 设置并确认

  • 聚合管道启用
  • 启用 MongoDB 3.4 有线协议(版本 5)
  • 启用每文档 TTL

我关注的文章是: https ://docs.microsoft.com/en-us/azure/cosmos-db/create-mongodb-golang

但是,我收到此错误:

在 Azure/CosmosDB 控制面板 > 连接字符串

因此 DB 应该是 vytest02?


# 代码