создать новое поле в выходных данных с помощью мангуста - PullRequest
0 голосов
/ 31 августа 2018

У меня есть простой 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})

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

При этом метод агрегирования является правильным, но если вы собираетесь использовать это поле temp во многих ваших запросах, вы можете рассмотреть возможность создания виртуальной схемы на вас, например:

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

personSchema.virtual('temp').get(() => {
    return `${this.name}_${this.age}`
});
0 голосов
/ 31 августа 2018

Вы можете сделать что-то подобное с MongoDB, используя $ addFields / $ concat и $ toString :

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

Вы можете посмотреть здесь

Примечание : это зависит от версии MongoDB 4.0 из-за использования $toString

Вы можете попробовать сделать это с помощью мангуста через:

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