在MongoDB聚合操作期间用字符串文字替换值

使用MongoDB $literal设置字符串文字。首先让我们创建一个包含文档的集合-

>db.replacevaluedemo.insertOne({"StudentName":"Chris","StudentFavouriteSubject":{"TeacherName":"Bob","SubjectCode":"MySQL111"}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e0390a3f5e889d7a51994fd")
}
>db.replacevaluedemo.insertOne({"StudentName":"Mike","StudentFavouriteSubject":{"TeacherName":"David","SubjectCode":"3221Java"}});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e0390b8f5e889d7a51994fe")
}

以下是在find()方法的帮助下显示集合中所有文档的查询-

> db.replacevaluedemo.find().pretty();

这将产生以下输出-

{
   "_id" : ObjectId("5e0390a3f5e889d7a51994fd"),
   "StudentName" : "Chris",
   "StudentFavouriteSubject" : {
      "TeacherName" : "Bob",
      "SubjectCode" : "MySQL111"
   }
}
{
   "_id" : ObjectId("5e0390b8f5e889d7a51994fe"),
   "StudentName" : "Mike",
   "StudentFavouriteSubject" : {
      "TeacherName" : "David",
      "SubjectCode" : "3221Java"
   }
}

这是将值替换为字符串文字的查询-

> db.replacevaluedemo.aggregate([{
...    "$project": {
...       "_id": 1,
...       "StudentFavouriteSubject": {
...          SubjectCode: 1,
...          TeacherName: { $literal: "UNKNOWN NAME" }
...       }
...    }
... }]).pretty();

这将产生以下输出-

{
   "_id" : ObjectId("5e0390a3f5e889d7a51994fd"),
   "StudentFavouriteSubject" : {
      "SubjectCode" : "MySQL111",
      "TeacherName" : "UNKNOWN NAME"
   }
}
{
   "_id" : ObjectId("5e0390b8f5e889d7a51994fe"),
   "StudentFavouriteSubject" : {
      "SubjectCode" : "3221Java",
      "TeacherName" : "UNKNOWN NAME"
   }
}