Files
mongo/jstests/aggregation/sources/replaceRoot/use_cases.js
2019-05-15 12:17:39 -04:00

26 lines
966 B
JavaScript

// Basic integration tests for $replaceRoot and its alias $replaceWith.
(function() {
"use strict";
const coll = db.replaceWith_use_cases;
coll.drop();
assert.commandWorked(coll.insert([
{_id: 0, comments: [{user_id: "x", comment: "foo"}, {user_id: "y", comment: "bar"}]},
{_id: 1, comments: [{user_id: "y", comment: "bar again"}]}
]));
// Test computing the most frequent commenters using $replaceRoot.
let pipeline = [
{$unwind: "$comments"},
{$replaceRoot: {newRoot: "$comments"}},
{$sortByCount: "$user_id"}
];
const expectedResults = [{_id: "y", count: 2}, {_id: "x", count: 1}];
assert.eq(coll.aggregate(pipeline).toArray(), expectedResults);
// Test the same thing but using the $replaceWith alias.
pipeline = [{$unwind: "$comments"}, {$replaceWith: "$comments"}, {$sortByCount: "$user_id"}];
assert.eq(coll.aggregate(pipeline).toArray(), expectedResults);
}());