データベースをシャーディングしようとしていますが、findAndModifyに問題があります
私はこのようなスキーマを持っています(myCollection):
{
"_id": "508206a9f6ded00c50f59469"
"DatabaseId" : 91,
"TypeId" : "5e62603c-8",
"ItemId" : "734",
"UserId" : "d14e3afd-d8b3-4c37-87cd-db5d89291c44"
}
シャードキーを次のように設定しています。
db.runCommand({enablesharding:"myDb"});
db.runCommand({
shardcollection: "myDb.myCollection",
key: {
"DatabaseId" : 1,
"TypeId" : 1,
"ItemId" : 1
}
});
上記のスキーマがデータベースに挿入されているとしましょう。
今、私はこのクエリを実行します:
db.myCollection.findAndModify({
query: {
"DatabaseId" : 91,
"TypeId" : "5e62603c-8",
"ItemId" : "734",
"UserId" : "d14e3afd-d8b3-4c37-87cd-db5d89291c44"
},
remove: true
});
findAndModifyを実行すると、次のエラーが発生します。
findAndModifyFailed failed: {
"errmsg" : "exception: query for sharded findAndModify must have shardkey",
"code" : 13343,
"ok" : 0
}
なぜそれがこれを言っているのか誰かが私に説明できますか?またはそれに対する解決策?私は必要なことはすべてやっているように思えます。