Mongo APIを使用してCosmosDBを設定しています。ドキュメントのフィールドの1つにハッシュされたシャードのコレクションがあります。 db.collection.remove
またはdb.collection.deleteMany
のようなコマンドを実行すると、次のエラーが発生します。
Command deleteMany failed: query in command must target a single shard key.: {"message":"Command deleteMany failed: query in command must target a single shard key."}
クエリをすべてのシャードで実行することを検討しているので、クエリの一部としてシャードキーをどのように説明できるかわかりません。
コードでスキーマモデルを指定する際に、シャードキー(パーティションキー)を指定する必要があります。それが提供されると、保存、更新、削除などの通常の操作を通常どおり実行できます。
例:
const mySchema = new Schema({
requestId: { type: String, required: true },
data: String,
documents: [{ docId: String, name: String, attachedBy: String }],
updatedBy: {
type: {
name: { type: String, required: true },
email: { type: String, required: true },
}, required: true
},
createdDate: { type: Date, required: true },
updatedDate: { type: Date },
}, { shardKey: { requestId: 1 } }
);
上記のコードでは、requestIdをシャードキーとして指定したので、mongo操作を実行できます。例:
let request:any = await myModel.findById(requestId);
request.data ="New Data";
await request.save();
お役に立てば幸いです。
これはすべてのMongo操作で機能します