Je cherche à shard ma base de données, mais j'ai un problème avec findAndModifyMongoDB Sharding findAndModify
J'ai un schéma qui ressemble à ceci (myCollection):
{
"_id": "508206a9f6ded00c50f59469"
"DatabaseId" : 91,
"TypeId" : "5e62603c-8",
"ItemId" : "734",
"UserId" : "d14e3afd-d8b3-4c37-87cd-db5d89291c44"
}
Je suis en train mon shardkey comme ceci:
db.runCommand({enablesharding:"myDb"});
db.runCommand({
shardcollection: "myDb.myCollection",
key: {
"DatabaseId" : 1,
"TypeId" : 1,
"ItemId" : 1
}
});
Disons que le schéma ci-dessus est inséré dans la base de données.
J'exécuter cette requête:
db.myCollection.findAndModify({
query: {
"DatabaseId" : 91,
"TypeId" : "5e62603c-8",
"ItemId" : "734",
"UserId" : "d14e3afd-d8b3-4c37-87cd-db5d89291c44"
},
remove: true
});
Je reçois cette erreur de courir le findAndModify:
findAndModifyFailed failed: {
"errmsg" : "exception: query for sharded findAndModify must have shardkey",
"code" : 13343,
"ok" : 0
}
Quelqu'un peut-il me expliquer pourquoi son dire cela? ou une solution pour cela? Il me semble que je fais tout ce dont j'ai besoin.
Je suis désolé, GroupId et Identifiant == TypeId et ItemId. J'ai fait le changement dans ma question. – ehftwelve
Selon: http://docs.mongodb.org/manual/reference/method/db.collection.findAndModify/#sharded-collections "Lors de l'utilisation de findAndModify dans un environnement partitionné, la requête doit contenir la clé shard pour toutes les opérations le cluster de partition pour les collections partagées. " – Sebastian