如何使用$ set使用猫鼬聚合的concat

问题描述 投票:1回答:1

例如,我有一个如下文件。

{
   "test": "success"
}

并且我想在“成功”之后添加额外的字符串值。

{
   "test": "successfail"
}

因此,我尝试使用猫鼬进行一些聚合。

const Users = require("./userSchema")

Users.aggregate([
  {},
  [{ $set: { test: { $concat: [ "$test", "fail" ] } } }],
])

但是这根本不起作用。您能为此建议一些解决方案吗?非常感谢您阅读本文。

mongodb mongoose mongodb-query aggregation-framework
1个回答
2
投票

要在集合的现有字段中并置字符串,您应该将$project阶段管道与$concat运算符一起使用,而不是在管道阶段中使用$set

Users.aggregate([{$ project:{测试:{$ concat:[“ $ test”,“”,“失败”]}}}])

有关更多详细信息,请同时检查以下查询以及输出:

> db.st1.find()
{ "_id" : ObjectId("5dffa38b4a36d14455f50158"), "test" : "success" }
> db.st1.aggregate([{$project: {test: {$concat: ["$test", "fail" ]  }  }  }])
{ "_id" : ObjectId("5dffa38b4a36d14455f50158"), "test" : "successfail" }
>
> db.st1.aggregate([{$project: {test: {$concat: ["$test", "-", "fail" ]  }  }  }])
{ "_id" : ObjectId("5dffa38b4a36d14455f50158"), "test" : "success-fail" }
> 
> db.st1.aggregate([{$project: {test: {$concat: ["$test", "", "fail" ]  }  }  }])
{ "_id" : ObjectId("5dffa38b4a36d14455f50158"), "test" : "successfail" }

有关参考,请访问MongoDB的官方文档:

  1. https://docs.mongodb.com/manual/reference/operator/aggregation/concat/#concat-aggregation
© www.soinside.com 2019 - 2024. All rights reserved.