代码之家  ›  专栏  ›  技术社区  ›  raju

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

  •  0
  • raju  · 技术社区  · 6 年前

    {
        "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})
    

    2 回复  |  直到 6 年前
        1
  •  1
  •   Akrion    6 年前

    $addFields / $concat $toString

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

    你可以 see it here

    注意 :这依赖于MongoDB版本 4 $toString

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

    Model.aggregate([
      {
        $addFields: {
          "temp": {
            $concat: [
              "$name",
              "_",
              {
                $toString: "$age"
              }
            ]
          }
        }
      },
      {
        $project: {
          _id: 0
        }
      }
    ])
    
        2
  •  1
  •   Arbaz Siddiqui    6 年前

    虽然聚合方法是正确的方法,但是如果你要使用这个方法 temp

    const personSchema = new Schema({
        name: "String",
        age: "Number"
    });
    
    personSchema.virtual('temp').get(() => {
        return `${this.name}_${this.age}`
    });