mongodb聚合函数将对象数组转换为字符串数组

发布于 2025-02-13 00:21:56 字数 1141 浏览 0 评论 0原文

我有一些文档。每个文档都有一个挑战_id字段。我想将这些文档数组映射到字符串数组中。最终的字符串数组应该由每个文档

输入中的挑战ID组成:

[
  {
    _id: ObjectId("62c3e31931e7df585c39e4e1"),
    activity_id: ObjectId("62c3e31931e7df585c39e4df"),
    challenge_id: ObjectId("62bd543c3a3937000958f2dd"),
    status: "active",
    createdAt: ISODate("2022-07-05T07:07:05.823Z"),
    updatedAt: ISODate("2022-07-05T07:07:05.823Z")
  },
  {
    _id: ObjectId("62c3e33f299750585cc70b23"),
    activity_id: ObjectId("62c3e33e299750585cc70b21"),
    challenge_id: ObjectId("62bd543c3a3937000958f2dd"),
    status: "active",
    createdAt: ISODate("2022-07-05T07:07:43.612Z"),
    updatedAt: ISODate("2022-07-05T07:07:43.612Z")
  },
  {
    _id: ObjectId("62c3e359341e86585c65c714"),
    activity_id: ObjectId("62c3e359341e86585c65c712"),
    challenge_id: ObjectId("62bd543c3a3937000958f2dd"),
    status: "active",
    createdAt: ISODate("2022-07-05T07:08:09.409Z"),
    updatedAt: ISODate("2022-07-05T07:08:09.409Z")
  }
]

输出应该看起来像:

 ['62bd543c3a3937000958f2dd','62bd543c3a3937000958f2dd', '62bd543c3a3937000958f2dd' ]

可以使用聚合功能执行此操作?如何 ?

I have some documents in a collection. Every document has a challenge_id field. I want to map those document array into a string array. The final string array should consist of challenge ids from each document

input:

[
  {
    _id: ObjectId("62c3e31931e7df585c39e4e1"),
    activity_id: ObjectId("62c3e31931e7df585c39e4df"),
    challenge_id: ObjectId("62bd543c3a3937000958f2dd"),
    status: "active",
    createdAt: ISODate("2022-07-05T07:07:05.823Z"),
    updatedAt: ISODate("2022-07-05T07:07:05.823Z")
  },
  {
    _id: ObjectId("62c3e33f299750585cc70b23"),
    activity_id: ObjectId("62c3e33e299750585cc70b21"),
    challenge_id: ObjectId("62bd543c3a3937000958f2dd"),
    status: "active",
    createdAt: ISODate("2022-07-05T07:07:43.612Z"),
    updatedAt: ISODate("2022-07-05T07:07:43.612Z")
  },
  {
    _id: ObjectId("62c3e359341e86585c65c714"),
    activity_id: ObjectId("62c3e359341e86585c65c712"),
    challenge_id: ObjectId("62bd543c3a3937000958f2dd"),
    status: "active",
    createdAt: ISODate("2022-07-05T07:08:09.409Z"),
    updatedAt: ISODate("2022-07-05T07:08:09.409Z")
  }
]

output should looks like:

 ['62bd543c3a3937000958f2dd','62bd543c3a3937000958f2dd', '62bd543c3a3937000958f2dd' ]

Is it possible to do this with an aggregate function ? How ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野侃 2025-02-20 00:21:56

您可以使用$ group像这样:

db.collection.aggregate([
  {$group: {_id: 0, res: {$push: {$toString: "$challenge_id"}}}},
  {$project: {res: 1, _id: 0}}
])

查看其在

You can use $group like this:

db.collection.aggregate([
  {$group: {_id: 0, res: {$push: {$toString: "$challenge_id"}}}},
  {$project: {res: 1, _id: 0}}
])

See how it works on the playground example

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文