我正在尝试对我的数据库进行分片,但我遇到了findAndModify的问题
我有一个看起来像这样的架构(myCollection):
{
"_id": "508206a9f6ded00c50f59469"
"DatabaseId" : 91,
"TypeId" : "5e62603c-8",
"ItemId" : "734",
"UserId" : "d14e3afd-d8b3-4c37-87cd-db5d89291c44"
}
我正在像这样设置我的 shardkey:
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
}
谁能向我解释为什么这么说?或解决方案?在我看来,我正在做我需要做的一切。