我怎样才能在mongoose中从一个特定的键得到所有的值?

0pizxfdo  于 2023-04-12  发布在  Go
关注(0)|答案(2)|浏览(119)

我在mongoose中得到了一些文档,看起来像这样:

[
    {
        _id = "...",
        name = "abc123",
        colors = [1, 2, 3]
    },
    {
        _id = "...",
        name = "def431",
        colors = [4, 2, 1]
    },
    {
        _id = "...",
        name = "htl534",
        colors = [3, 5, 7]
    },
    {
        _id = "...",
        name = "lwq154",
        colors = [9, 1, 4]
    }
]

从这些文档中,我想得到一个数组,其中包含来自名为name的键的所有值,它看起来像这样:["abc123", "def431", "htl534", "lwq154"] .我怎么能做到这一点呢?我想使用某种查询或一些查找功能,但我似乎不能弄清楚.

f3temu5u

f3temu5u1#

try {
  const data = await Model.find(); // use your model name here, this will store every document in an array
  const result = [];
  data.forEach((item) => result.push(item.name)); //for every document in data array, we store the name onto the result array
  return res.status(200).send(result);
} catch (error) {
  return res.status(500).send(error);
}
w1e3prcc

w1e3prcc2#

我认为你可以使用一个aggregate查询,并使用一个简单的$group来避免循环,如下所示:

db.collection.aggregate([
  {
    "$group": {
      "_id": null,
      "result": {
        "$push": "$name"
      }
    }
  }
])

示例here
使用此查询,您将所有值添加到调用result的数组中。您也可以使用$addToSet来避免重复。示例here

相关问题