在猫鼬中添加带有聚合的嵌套集合?

时间:2021-05-15 08:23:13

标签: javascript node.js mongodb

我是 mongoose 的新手,我在创建查询时很困惑。你能帮我吗?

我有这样的视频集:

{
    _id: 603dea86cef0aed372cd9ce6,
    category: [
        "603dea86cef0aed372cd9cd8", // array of category objectId
        "603dea86cef0aed372cd9cd9"
    ],
    hashtag: [
        "603dea86cef0aed372cd9cee" // array of hashtag objectId
    ],
    video_id: '6925666264463576320',
    share_id: 'greate_video',
    author: 603dea86cef0aed372cd9cd8, // ref to Author objectId
    cover: 'https://path.to/img.jpg',
    post_by: 60083f24edae03650406ad48, // ref to User objectId
    status: 1, // enum status [0, 1, 2]
    date: 2021-03-02T07:34:30.635Z
  }

我想查询以获取具有如下结构的数据。我的意思是,我会通过 _id 查找并从其他集合中获取相关数据,更重要的是,我希望视频列表显示状态为 1、2(不是 0)并按视频 _id 排序:-1。

{
    _id: 603dea86cef0aed372cd9ce6,
    category: [
        {_id: "603dea86cef0aed372cd9cd8", category_name: Tech},
        {_id: "603dea86cef0aed372cd9cd9", category_name: Mobile},
    ],
    hashtag: [
        {_id: "603dea86cef0aed372cd9cee", hashtag_name: tech},
    ],
    video_id: '6925666264463576320',
    share_id: 'greate_video',
    author: {_id: "603dea86cef0aed372cd9cd8", author_name: Nani, avatar: 'https://path.to/avatar.jpg'},
    cover: 'https://path.to/img.jpg',
    post_by: {_id: "603dea86cef0aed372cd9cd8", user_name: Username, avatar: 'https://path.to/avatar.jpg'},
    status: 1,
    date: 2021-03-02T07:34:30.635Z
  }

如何编写聚合查询?我尝试过这样的查询,但不起作用,它显示空 [] 结果。

const videoList = await Video.aggregate([
            {
                $lookup:
                {
                    from: 'Author',
                    localField: "author",
                    foreignField: "_id",
                    as: "author_info"
                }
            }
        ])

谢谢

1 个答案:

答案 0 :(得分:1)

馆藏名称通常以复数小写字母书写,所以我认为您应该将作者更改为作者