如何使用$ set将concat与猫鼬聚合一起使用

时间:2019-12-22 16:15:05

标签: mongodb mongoose mongodb-query aggregation-framework

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

{
   "test": "success"
}

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

{
   "test": "successfail"
}

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

const Users = require("./userSchema")

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

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

1 个答案:

答案 0 :(得分: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