bson/testdata/crud/unified/aggregate.yml
2025-03-17 20:58:26 +01:00

217 lines
6.7 KiB
YAML

description: "aggregate"
schemaVersion: "1.0"
createEntities:
- client:
id: &client0 client0
useMultipleMongoses: true # ensure cursors pin to a single server
observeEvents: [ commandStartedEvent ]
- database:
id: &database0 database0
client: *client0
databaseName: &database0Name aggregate-tests
- collection:
id: &collection0 collection0
database: *database0
collectionName: &collection0Name coll0
initialData:
- collectionName: *collection0Name
databaseName: *database0Name
documents:
- { _id: 1, x: 11 }
- { _id: 2, x: 22 }
- { _id: 3, x: 33 }
- { _id: 4, x: 44 }
- { _id: 5, x: 55 }
- { _id: 6, x: 66 }
tests:
- description: "aggregate with multiple batches works"
operations:
- name: aggregate
arguments:
pipeline: [ { $match: { _id: { $gt: 1 } }} ]
batchSize: 2
object: *collection0
expectResult:
- { _id: 2, x: 22 }
- { _id: 3, x: 33 }
- { _id: 4, x: 44 }
- { _id: 5, x: 55 }
- { _id: 6, x: 66 }
expectEvents:
- client: *client0
events:
- commandStartedEvent:
command:
aggregate: *collection0Name
pipeline: [ { $match: { _id: { $gt: 1 } }} ]
cursor: { batchSize: 2 }
commandName: aggregate
databaseName: *database0Name
- commandStartedEvent:
command:
getMore: { $$type: [ int, long ] }
collection: *collection0Name
batchSize: 2
commandName: getMore
databaseName: *database0Name
- commandStartedEvent:
command:
getMore: { $$type: [ int, long ] }
collection: *collection0Name
batchSize: 2
commandName: getMore
databaseName: *database0Name
- description: "aggregate with a string comment"
runOnRequirements:
- minServerVersion: "3.6.0"
operations:
- name: aggregate
arguments:
pipeline: [ { $match: { _id: { $gt: 1 } }} ]
comment: "comment"
object: *collection0
expectEvents:
- client: *client0
events:
- commandStartedEvent:
command:
aggregate: *collection0Name
pipeline: [ { $match: { _id: { $gt: 1 } } } ]
comment: "comment"
- description: "aggregate with a document comment"
runOnRequirements:
- minServerVersion: "4.4"
operations:
- name: aggregate
arguments:
pipeline: [ { $match: { _id: { $gt: 1 } }} ]
comment: &comment0 { content: "test" }
object: *collection0
expectEvents:
- client: *client0
events:
- commandStartedEvent:
command:
aggregate: *collection0Name
pipeline: [ { $match: { _id: { $gt: 1 } } } ]
comment: *comment0
- description: "aggregate with a document comment - pre 4.4"
runOnRequirements:
- minServerVersion: "3.6.0"
maxServerVersion: "4.2.99"
operations:
- name: aggregate
object: *collection0
arguments:
pipeline: [ { $match: { _id: { $gt: 1 } }} ]
comment: *comment0
expectError:
isClientError: false
expectEvents:
- client: *client0
events:
- commandStartedEvent:
command:
aggregate: *collection0Name
pipeline: [ { $match: { _id: { $gt: 1 } }} ]
comment: *comment0
commandName: aggregate
databaseName: *database0Name
- description: "aggregate with comment sets comment on getMore"
runOnRequirements:
- minServerVersion: "4.4.0"
topologies: [ single, replicaset ]
operations:
- name: aggregate
arguments:
pipeline: [ { $match: { _id: { $gt: 1 } }} ]
batchSize: 2
comment: *comment0
object: *collection0
expectResult:
- { _id: 2, x: 22 }
- { _id: 3, x: 33 }
- { _id: 4, x: 44 }
- { _id: 5, x: 55 }
- { _id: 6, x: 66 }
expectEvents:
- client: *client0
events:
- commandStartedEvent:
command:
aggregate: *collection0Name
pipeline: [ { $match: { _id: { $gt: 1 } }} ]
cursor: { batchSize: 2 }
comment: *comment0
commandName: aggregate
databaseName: *database0Name
- commandStartedEvent:
command:
getMore: { $$type: [ int, long ] }
collection: *collection0Name
batchSize: 2
comment: *comment0
commandName: getMore
databaseName: *database0Name
- commandStartedEvent:
command:
getMore: { $$type: [ int, long ] }
collection: *collection0Name
batchSize: 2
comment: *comment0
commandName: getMore
databaseName: *database0Name
- description: "aggregate with comment does not set comment on getMore - pre 4.4"
runOnRequirements:
- minServerVersion: "3.6.0"
maxServerVersion: "4.3.99"
operations:
- name: aggregate
arguments:
pipeline: [ { $match: { _id: { $gt: 1 } }} ]
batchSize: 2
comment: "comment"
object: *collection0
expectResult:
- { _id: 2, x: 22 }
- { _id: 3, x: 33 }
- { _id: 4, x: 44 }
- { _id: 5, x: 55 }
- { _id: 6, x: 66 }
expectEvents:
- client: *client0
events:
- commandStartedEvent:
command:
aggregate: *collection0Name
pipeline: [ { $match: { _id: { $gt: 1 } }} ]
cursor: { batchSize: 2 }
comment: "comment"
commandName: aggregate
databaseName: *database0Name
- commandStartedEvent:
command:
getMore: { $$type: [ int, long ] }
collection: *collection0Name
batchSize: 2
comment: { $$exists: false }
commandName: getMore
databaseName: *database0Name
- commandStartedEvent:
command:
getMore: { $$type: [ int, long ] }
collection: *collection0Name
batchSize: 2
comment: { $$exists: false }
commandName: getMore
databaseName: *database0Name