Вы можете использовать запрос explain()
, чтобы определить осколок документа, выполнив запрос на основе ключа осколка.
В выигрышном плане должен быть этап SINGLE_SHARD с запросом на равенство, подобным следующему (с некоторыми дополнительными выходными данными, обрезанными для ясности):
> db.users.find({userId:123}).explain().queryPlanner.winningPlan
{
"stage" : "SINGLE_SHARD",
"shards" : [
{
"shardName" : "shard01",
"plannerVersion" : 1,
"namespace" : "test.users",
"indexFilterSet" : false,
"parsedQuery" : {
"userId" : {
"$eq" : 123
}
},
}
]
}
Если вам нужно только имя осколка, вы можете использовать нотацию JavaScript для ссылки на полный путь:
> db.users.find({userId:123}).explain().queryPlanner.winningPlan.shards[0].shardName
shard01