gpt4 book ai didi

mongodb - 创建索引会导致未经授权的错误

转载 作者:行者123 更新时间:2023-12-05 05:57:54 32 4
gpt4 key购买 nike

我正在开发一个使用 Go 微服务连接到 Azure CosmosDB 的项目。在开发/阶段环境中,我使用 MongoDB API 3.6,用于生产 4.0。

微服务在集合上创建索引。对于开发/阶段环境,一切工作都很好。但在生产中我检索到以下错误:

(Unauthorized) Error=13, Details='Response status code does notindicate success, Number of regions attempted:1

我已经检查了连接字符串两次,目前生产数据库没有防火墙规则。

我的代码看起来很熟悉:

package repository

import (
"go.mongodb.org/mongo-driver/mongo"
"log"
)

func Collection(db *mongo.Database, c string, indices ...mongo.IndexModel) *mongo.Collection {
col := db.Collection(c)

if indices != nil {
_, err := col.Indexes().CreateMany(ctx, indices)
if err != nil {
log.Fatal(err)
}
}

return col
}

// .....

package service

import (
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"repository"
)

col := repository.Collection(db, "my_col", []mongo.IndexModel{
{
Keys: bson.M{"uuid": 1},
Options: options.Index().SetUnique(true),
},
}...)

有人知道导致此错误的原因吗?

最佳答案

我已联系 Microsoft 支持人员,他们的回复如下:

This is a limitation of accounts with Point in Time Restore. The collection must be created with a unique index.

https://learn.microsoft.com/en-us/azure/cosmos-db/continuous-backup-restore-introduction

You can use a command such as this to create the collection with the unique index already present (from the Mongo shell, or Robo3T, or another client)

MongoDB extension commands to manage data in Azure Cosmos DB’s API for MongoDB | Microsoft Docs

For example:

db.runCommand({
customAction: "CreateCollection",
collection: "my_collection",
shardKey: "my_shard_key",
offerThroughput: 100,
indexes: [{key: {_id: 1}, name: "_id_1"}, {key: {a: 1, b: 1}, name:"a_1_b_1", unique: true} ]
})

现在我的代码如下所示:

func Collection(db *mongo.Database, c string, indices []bson.M) *mongo.Collection {
ctx, cls := context.WithTimeout(context.Background(), time.Second * 15)
defer cls()

if cursor, _ := db.ListCollectionNames(ctx, bson.M{"name": c}); len(cursor) < 1 {
cmd := bson.D{{"customAction", "CreateCollection"}, {"collection", c}}
if indices != nil {
cmd = append(cmd, bson.E{Key: "indexes", Value: indices})
}

res := db.RunCommand(ctx, cmd)

if res.Err() != nil {
log.Fatal(res.Err())
}
}

return db.Collection(c)
}

关于mongodb - 创建索引会导致未经授权的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68666316/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com