-
Notifications
You must be signed in to change notification settings - Fork 209
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MOTOR-784 Versioned API migration example for ecosystem docs #127
Changes from 1 commit
6f83b4b
600fc16
7ac0cf2
91cbd2e
4a0ea43
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -1138,3 +1138,43 @@ async def test_versioned_api(self): | |
client = AsyncIOMotorClient( | ||
uri, server_api=ServerApi("1", deprecation_errors=True)) | ||
# End Versioned API Example 4 | ||
|
||
@env.require_version_min(4, 7) | ||
@asyncio_test | ||
async def test_versioned_api_migration(self): | ||
client = self.asyncio_client(server_api=ServerApi("1", strict=True)) | ||
await client.db.sales.drop() | ||
|
||
# Start Versioned API Example 5 | ||
await client.db.sales.insert_many([ | ||
{"_id": 1, "item": "abc", "price": 10, "quantity": 2, "date": datetime.datetime.strptime("2021-01-01T08:00:00Z", "%Y-%m-%dT%H:%M:%SZ")}, | ||
{"_id": 2, "item": "jkl", "price": 20, "quantity": 1, "date": datetime.datetime.strptime("2021-02-03T09:00:00Z", "%Y-%m-%dT%H:%M:%SZ")}, | ||
{"_id": 3, "item": "xyz", "price": 5, "quantity": 5, "date": datetime.datetime.strptime("2021-02-03T09:05:00Z", "%Y-%m-%dT%H:%M:%SZ")}, | ||
{"_id": 4, "item": "abc", "price": 10, "quantity": 10, "date": datetime.datetime.strptime("2021-02-15T08:00:00Z", "%Y-%m-%dT%H:%M:%SZ")}, | ||
{"_id": 5, "item": "xyz", "price": 5, "quantity": 10, "date": datetime.datetime.strptime("2021-02-15T09:05:00Z", "%Y-%m-%dT%H:%M:%SZ")}, | ||
{"_id": 6, "item": "xyz", "price": 5, "quantity": 5, "date": datetime.datetime.strptime("2021-02-15T12:05:10Z", "%Y-%m-%dT%H:%M:%SZ")}, | ||
{"_id": 7, "item": "xyz", "price": 5, "quantity": 10, "date": datetime.datetime.strptime("2021-02-15T14:12:12Z", "%Y-%m-%dT%H:%M:%SZ")}, | ||
{"_id": 8, "item": "abc", "price": 10, "quantity": 5, "date": datetime.datetime.strptime("2021-03-16T20:20:13Z", "%Y-%m-%dT%H:%M:%SZ")} | ||
]) | ||
# End Versioned API Example 5 | ||
|
||
try: | ||
await client.db.command('count', 'sales', query={}) | ||
prashantmital marked this conversation as resolved.
Show resolved
Hide resolved
|
||
except OperationFailure as exc: | ||
err_msg = str(exc) | ||
else: | ||
self.fail("Running count with apiVersion=1 and strict=True didn't " | ||
"raise an exception") | ||
|
||
# Start Versioned API Example 6 | ||
# pymongo.errors.OperationFailure: Provided apiStrict:true, but the command count is not in API Version 1, full error: {'ok': 0.0, 'errmsg': 'Provided apiStrict:true, but the command count is not in API Version 1', 'code': 323, 'codeName': 'APIStrictError', '$clusterTime': {'clusterTime': Timestamp(1626977595, 10), 'signature': {'hash': b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', 'keyId': 0}}, 'operationTime': Timestamp(1626977595, 10)} | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think this makes sense. |
||
# End Versioned API Example 6 | ||
|
||
# Start Versioned API Example 7 | ||
await client.db.sales.aggregate( | ||
[{"$group": {"_id": None, "count": {"$count": {}}}}]).to_list(length=None) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should really be using count_documents() or estimated_document_count() instead of aggregate . I asked about it on the drivers ticket https://jira.mongodb.org/browse/DRIVERS-1846 |
||
# End Versioned API Example 7 | ||
|
||
# Start Versioned API Example 8 | ||
# [{'_id': None, 'count': 8}] | ||
# End Versioned API Example 7 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggest refactoring to make this less verbose. Maybe: