29 lines
958 B
JavaScript
29 lines
958 B
JavaScript
// Basic integration tests for $replaceRoot and its alias $replaceWith.
|
|
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);
|