我有一个简单的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})
请帮助。
答案 0 :(得分:1)
您可以使用$addFields / $concat和$toString对MongoDB进行类似的操作:
db.collection.aggregate([
{
$addFields: {
"temp": {
$concat: [
"$name",
"_",
{
$toString: "$age"
}
]
}
}
},
{
$project: {
_id: 0
}
}
])
您可以see it here
注意:由于使用了$toString
您可以尝试通过以下方式对猫鼬进行操作:
Model.aggregate([
{
$addFields: {
"temp": {
$concat: [
"$name",
"_",
{
$toString: "$age"
}
]
}
}
},
{
$project: {
_id: 0
}
}
])
答案 1 :(得分:1)
虽然这样做是正确的方法,但是如果要在许多查询中使用此temp
字段,则可能需要考虑使用它在您的模式上创建虚拟对象,例如:>
const personSchema = new Schema({
name: "String",
age: "Number"
});
personSchema.virtual('temp').get(() => {
return `${this.name}_${this.age}`
});