load('jstests/aggregation/extras/utils.js'); db.server5782.drop(); db.server5782.save({string: "foo"}); // check that without $literal we end up comparing a field with itself and the result is true var result = db.runCommand({ aggregate: "server5782", pipeline: [{$project: {stringis$string: {$eq: ["$string", '$string']}}}] }); assert.eq(result.result[0].stringis$string, true); // check that with $literal we end up comparing a field with '$string' and the result is true var result = db.runCommand({ aggregate: "server5782", pipeline: [{$project: {stringis$string: {$eq: ["$string", {$literal: '$string'}]}}}] }); assert.eq(result.result[0].stringis$string, false);