使用mongoose在输出中创建新字段

使用mongoose在输出中创建新字段,mongoose,mongoose-schema,Mongoose,Mongoose Schema,我有一个简单的mongodb { "name" :"rajesh", "age" : 38 }, { "name" :"vijay", "age" : 27 } 我想在我的猫鼬输出像这样 { "name" :"rajesh", "age" : 38, "temp" : "rajesh_38" }, { "name" :"vijay", "age" : 27, "temp" : "vijay_27" } sche

我有一个简单的mongodb

{
    "name" :"rajesh",
    "age" : 38
},
{
    "name" :"vijay",
    "age" : 27
}
我想在我的猫鼬输出像这样

{
    "name" :"rajesh",
    "age" : 38,
    "temp" : "rajesh_38"
},
{
    "name" :"vijay",
    "age" : 27,
    "temp" : "vijay_27"
}


schema.find(findObj)
    .select({allExistingFields+newField})

请提供帮助。

您可以使用/和使用MongoDB执行类似操作:

你可以

注意:由于使用了
$toString

您可以通过以下方式尝试使用猫鼬:

Model.aggregate([
  {
    $addFields: {
      "temp": {
        $concat: [
          "$name",
          "_",
          {
            $toString: "$age"
          }
        ]
      }
    }
  },
  {
    $project: {
      _id: 0
    }
  }
])

您可以使用/和使用MongoDB执行以下操作:

你可以

注意:由于使用了
$toString

您可以通过以下方式尝试使用猫鼬:

Model.aggregate([
  {
    $addFields: {
      "temp": {
        $concat: [
          "$name",
          "_",
          {
            $toString: "$age"
          }
        ]
      }
    }
  },
  {
    $project: {
      _id: 0
    }
  }
])

聚合时的方法是正确的方法,但是如果在很多查询中使用这个代码> TEMP字段,你可能会想它在你的模式上生成一个虚拟的,比如:

const personSchema = new Schema({
    name: "String",
    age: "Number"
});

personSchema.virtual('temp').get(() => {
    return `${this.name}_${this.age}`
});

聚合时的方法是正确的方法,但是如果在很多查询中使用这个代码> TEMP字段,你可能会想它在你的模式上生成一个虚拟的,比如:

const personSchema = new Schema({
    name: "String",
    age: "Number"
});

personSchema.virtual('temp').get(() => {
    return `${this.name}_${this.age}`
});

db.collection.aggregate???如何在mongoosemodel.aggregate(…)db.collection.aggregate???如何在mongoosemodel.aggregate(…)中使用它