Skip to content

Commit 33ca6c4

Browse files
committed
PHPLIB-1695 Add $createObjectId operator to the agg builder
1 parent 25dd588 commit 33ca6c4

File tree

5 files changed

+99
-0
lines changed

5 files changed

+99
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# $schema: ../schema.json
2+
name: $createObjectId
3+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/createObjectId/'
4+
type:
5+
- resolvesToObjectId
6+
encode: object
7+
description: |
8+
Returns a random object ID
9+
tests:
10+
-
11+
name: 'Example'
12+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/createObjectId/#example'
13+
pipeline:
14+
-
15+
$project:
16+
objectId:
17+
$createObjectId: {}

src/Builder/Expression/CreateObjectIdOperator.php

Lines changed: 28 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Builder/Expression/FactoryTrait.php

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace MongoDB\Tests\Builder\Expression;
6+
7+
use MongoDB\Builder\Expression;
8+
use MongoDB\Builder\Pipeline;
9+
use MongoDB\Builder\Stage;
10+
use MongoDB\Tests\Builder\PipelineTestCase;
11+
12+
/**
13+
* Test $createObjectId expression
14+
*/
15+
class CreateObjectIdOperatorTest extends PipelineTestCase
16+
{
17+
public function testExample(): void
18+
{
19+
$pipeline = new Pipeline(
20+
Stage::project(
21+
objectId: Expression::createObjectId(),
22+
),
23+
);
24+
25+
$this->assertSamePipeline(Pipelines::CreateObjectIdExample, $pipeline);
26+
}
27+
}

tests/Builder/Expression/Pipelines.php

Lines changed: 17 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)