mongo/jstests/aggregation/expressions/sortArray2.js
Alberto Massari e72c3b92e7 SERVER-109190 extractElementAtDottedPath should ignore fields with dots inside (#40788)
GitOrigin-RevId: d33523cad974f2d5311b3d689ce199cc9bb9a91c
2025-09-29 14:20:17 +00:00

50 lines
1.3 KiB
JavaScript

// @tags: [
// requires_fcv_83,
// ]
// SERVER-109190: verify sorting works in the same way $sort works, also in presence of fields
// containing dots.
let coll = db.sortArray2;
coll.drop();
let assertDBOutputEquals = (expected, output) => {
output = output.toArray();
assert.eq(1, output.length);
assert.eq(expected, output[0].sorted);
};
assert.commandWorked(
coll.insertMany([
{_id: 0, b: {c: 1}},
{_id: 1, b: {c: 2}},
]),
);
assertDBOutputEquals(
coll.aggregate([{$sort: {"b.c": 1}}]).toArray(),
coll.aggregate([
{$group: {_id: null, arr: {$push: "$$ROOT"}}},
{$project: {_id: 0, sorted: {$sortArray: {input: "$arr", sortBy: {"b.c": 1}}}}},
]),
);
assertDBOutputEquals(
coll.aggregate([{$sort: {"b.c": -1}}]).toArray(),
coll.aggregate([
{$group: {_id: null, arr: {$push: "$$ROOT"}}},
{$project: {_id: 0, sorted: {$sortArray: {input: "$arr", sortBy: {"b.c": -1}}}}},
]),
);
assert.commandWorked(
coll.insertMany([
{_id: 2, "b.c": 1, b: {c: 3}},
{_id: 3, "b.c": 0, b: {c: 4}},
]),
);
assertDBOutputEquals(
coll.aggregate([{$sort: {"b.c": 1}}]).toArray(),
coll.aggregate([
{$group: {_id: null, arr: {$push: "$$ROOT"}}},
{$project: {_id: 0, sorted: {$sortArray: {input: "$arr", sortBy: {"b.c": 1}}}}},
]),
);