与CosmosDB结合在一起的猫鼬:收到错误消息“共享吞吐量收集应具有分区键”

alt*_*alt 5 mongoose node.js azure-cosmosdb azure-cosmosdb-mongoapi

我有一个node-express当前用于Mongoose连接到MongoDB 的应用程序,并且正在尝试将其迁移到Azure Cosmos DB。

当我简单地允许Mongoose创建数据库时,该应用程序可以正常工作,但是该数据库是按单个集合RU定价创建的。

如果我创建一个启用了“共享吞吐量”的新数据库并尝试使用它,则会收到错误消息 Shared throughput collection should have a partition key

我尝试过更新收集模式以包括如下所示的分片键:

const mongoose = require('mongoose');

module.exports = function() {
  const types = mongoose.Schema.Types;
  const messages = new mongoose.Schema({
    order: { type: types.ObjectId, required: true, ref: 'orders' },
    createdAt: { type: Date, default: Date.now },
    sender: { type: types.ObjectId, required: true, ref: 'users' },
    recipient: { type: types.ObjectId, ref: 'users' },
    text: { type: String, required: true },
    seen: { type: Boolean, default: false },
  }, { shardKey: { order: 1 } });

  return mongoose.model('messages', messages);
};
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用。

关于如何创建/使用分区键的任何想法?另外,数据库很小,因此,如果有可能消除对分区键的要求,那也可以。

Nol*_*ski 4

现在我对这个问题没有确切的答案,所以不需要接受这个,除非你觉得它是正确的。

到目前为止,我发现的最佳解决方案是,这是由于在 Azure 控制台中创建数据库时检查了“配置吞吐量”。如果您删除并重新创建数据库时未选中此框(它位于数据库名称输入的正下方),那么您应该不会再遇到此错误。

  • 我相信创建具有专用吞吐量的数据库,因此每个集合的成本最低,而不是每个数据库的成本最低。 (6认同)