mongodb 如何从所有数据中提取某一项?

比如我现在有个表,结构分别为:

A = [{
    id: 1,
    array: [{id: 11}, {id: 12}]
}, {
    id: 2,
    array: [{id: 21}, {id: 22}]
}, {
    id: 3,
    array: [{id: 31}, {id: 32}]
}]

我想得到的格式为:

A = [{
    fid:1, id: 11
}, {
    fid:1, id: 12
}, {
    fid:2, id: 21
}, {
    fid:2, id: 22
}, {
    fid:3, id: 31
}, {
    fid:3, id: 32
}]

我现在能想到的办法是

A.find().then(data => {
    let B = []
    data.forEach(item => {
        item.array.forEach(it => {
            B.push({
                fid: item.id,
                id: it.id
            })
        })
    })
})

但真的觉得这么些太笨了,想是否能通过 mongoose 的查询方法直接实现呢?

阅读 1.7k
3 个回答
mongoModel.aggregate([{
    $unwind: "$array"
}]).then(data => {
    console.log(111, data)
})
A.aggregate([
    { $unwind: "$array" },
    {
        $project: {
            _id: 0,
            fid: "$id",
            id: "$array.id"
        }
    }
]).then(data => {
    console.log(data);
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题