summaryrefslogtreecommitdiff
path: root/jstests/aggregation/sources/setWindowFields/parse.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/aggregation/sources/setWindowFields/parse.js')
-rw-r--r--jstests/aggregation/sources/setWindowFields/parse.js13
1 files changed, 11 insertions, 2 deletions
diff --git a/jstests/aggregation/sources/setWindowFields/parse.js b/jstests/aggregation/sources/setWindowFields/parse.js
index 63b92e952e0..b766a76d8ae 100644
--- a/jstests/aggregation/sources/setWindowFields/parse.js
+++ b/jstests/aggregation/sources/setWindowFields/parse.js
@@ -213,8 +213,7 @@ assert.commandWorked(run({
}));
// Not every accumulator is automatically a window function.
-
-var err = assert.commandFailedWithCode(run({$setWindowFields: {output: {a: {b: {$sum: "$a"}}}}}),
+let err = assert.commandFailedWithCode(run({$setWindowFields: {output: {a: {b: {$sum: "$a"}}}}}),
ErrorCodes.FailedToParse);
assert.includes(err.errmsg, 'Expected a $-prefixed window function, b');
@@ -250,4 +249,14 @@ err = assert.commandFailedWithCode(
}),
ErrorCodes.FailedToParse);
assert.includes(err.errmsg, 'Unrecognized window function, $summ');
+
+// Test that an empty object is a valid projected field.
+assert.commandWorked(coll.insert({}));
+assert.commandWorked(run({$setWindowFields: {output: {v: {$max: {mergeObjects: {}}}}}}));
+
+// However conflicting field paths is always an error.
+err = assert.commandFailedWithCode(
+ run({$setWindowFields: {output: {a: {$sum: 1}, 'a.b': {$sum: 1}}}}), 40176);
+assert.includes(err.errmsg, 'specification contains two conflicting paths');
+
})();