diff options
Diffstat (limited to 'src/mongo/db/s/collection_metadata.cpp')
-rw-r--r-- | src/mongo/db/s/collection_metadata.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/mongo/db/s/collection_metadata.cpp b/src/mongo/db/s/collection_metadata.cpp index ea9f6f0c7c1..6b0fb689356 100644 --- a/src/mongo/db/s/collection_metadata.cpp +++ b/src/mongo/db/s/collection_metadata.cpp @@ -107,13 +107,13 @@ void CollectionMetadata::throwIfReshardingInProgress(NamespaceString const& nss) } } -BSONObj CollectionMetadata::extractDocumentKey(const BSONObj& doc) const { +BSONObj CollectionMetadata::extractDocumentKey(const ShardKeyPattern* shardKeyPattern, + const BSONObj& doc) { BSONObj key; - if (isSharded()) { - auto const& pattern = _cm->getShardKeyPattern(); - key = dotted_path_support::extractElementsBasedOnTemplate(doc, pattern.toBSON()); - if (pattern.hasId()) { + if (shardKeyPattern) { + key = dotted_path_support::extractElementsBasedOnTemplate(doc, shardKeyPattern->toBSON()); + if (shardKeyPattern->hasId()) { return key; } // else, try to append an _id field from the document. @@ -127,6 +127,10 @@ BSONObj CollectionMetadata::extractDocumentKey(const BSONObj& doc) const { return doc; } +BSONObj CollectionMetadata::extractDocumentKey(const BSONObj& doc) const { + return extractDocumentKey(isSharded() ? &_cm->getShardKeyPattern() : nullptr, doc); +} + std::string CollectionMetadata::toStringBasic() const { if (isSharded()) { return str::stream() << "collection version: " << _cm->getVersion().toString() |