Files
mongo/jstests/core/views/dbref_projection.js
Jordi Serra Torrens ed82593942 SERVER-94502 Make RouterRole loops that reenter directly into the ShardRole not retry upon stale shard (#26876)
GitOrigin-RevId: 4c1dc2fca97ef02649cd6271ced60ad211149c27
2024-09-18 08:20:53 +00:00

25 lines
1.0 KiB
JavaScript

/**
* Test projecting DBRef fields ($ref, $id, $db) in views.
*
* Legacy find() queries do not support views, so must use the find() command.
*/
const viewsDB = db.getSiblingDB("views_dbref_projection");
assert.commandWorked(viewsDB.dropDatabase());
assert.commandWorked(
viewsDB.baseColl.insert({_id: 0, link: new DBRef("otherColl", "someId", viewsDB.getName())}));
assert.commandWorked(viewsDB.runCommand({create: "view", viewOn: "baseColl"}));
// Check that the view and base collection return the same thing.
function checkViewAndBaseCollection(projection, expectedResult) {
const baseRes = viewsDB.baseColl.find({}, projection).toArray();
const viewRes = viewsDB.view.find({}, projection).toArray();
assert.eq(baseRes, viewRes);
assert.eq(expectedResult, baseRes);
}
checkViewAndBaseCollection({"link.$ref": 1}, [{_id: 0, link: {$ref: "otherColl"}}]);
checkViewAndBaseCollection({"link.$db": 1}, [{_id: 0, link: {$db: viewsDB.getName()}}]);
checkViewAndBaseCollection({"link.$id": 1}, [{_id: 0, link: {$id: "someId"}}]);