外国收藏似乎没有出现在汇总数据中

Posted

技术标签:

【中文标题】外国收藏似乎没有出现在汇总数据中【英文标题】:Foreign collection doesn't seem to be appearing in aggregated data 【发布时间】:2021-09-13 10:28:41 【问题描述】:

我正在创建一个简单的论坛,并希望链接两个集合,以便我可以显示有关在他们的帖子上发帖的用户的数据:

用户.js:

_id:60ccb13a21d65f0c7c4c0690
username: testuser
name: test

还有 Createpost.js

_id:60d80b1305dcc535c4bf111a
postTitle: "test post"
postText: "aaaaa"
postUsername: "testuser"

有人建议我尝试 $lookup,所以我有这个:

router.get('/forum', async (req,res)=>res.render('forum', 
    newPost: await Createpost.aggregate([

    $lookup: 
         from: "User", 
         localField: "postUsername", 
         foreignField: "username", 
         as: "postUser"
    
,

    $sort: date: -1
  
])));

然后我像这样在ejs中显示它:

<% newPost.forEach(newPost =>  %>
    Posted by: <%= newPost.postUsername %> - Name: <%= newPost.postUser.name %>
    <%= newPost.postText %>
<% %>

来自 Createpost.js 的所有数据都工作正常,postUsername 和 postText 正在显示,但是当涉及到我尝试加入的数据时,比如 name,它什么也没显示。我尝试控制台记录聚合数据,看起来 postUser 只是一个空数组,所以我怀疑它没有从“用户”获取任何数据?但我不知道我能做什么,mongodb 中的集合被称为 users 而不是 User 但把它放在字符串中也行不通。

【问题讨论】:

mongoplayground.net/p/eHrR26mcP_n 似乎运行良好,如果打印 newPost.postUser[0].name 会发生什么? 它说无法读取未定义的名称,当我尝试运行此代码时: const aggregatedpost = await Createpost.aggregate([$lookup: from: "User", localField: "postUsername", foreignField: "username", as: "postUser"]) console.log(aggregatedpost.postUser),它也说未定义.. 你确定这些集合在同一个数据库下吗? 是的,在 mongodb 中显示如下:LHDB > createposts users votes 很高兴听到这个消息,良好的团队合作 【参考方案1】:

您正在写“用户”作为集合名称,请检查 MongoDB 中保存的集合名称。它应该保存为“用户”集合。因此,您必须像下面的代码一样在查找中编写“用户”:

router.get('/forum', async (req,res)=>res.render('forum', 
        newPost: await Createpost.aggregate([
    
        $lookup: 
             from: "users", 
             localField: "postUsername", 
             foreignField: "username", 
             as: "postUser"
        
    ,
    
        $sort: date: -1
      
    ])));

【讨论】:

以上是关于外国收藏似乎没有出现在汇总数据中的主要内容,如果未能解决你的问题,请参考以下文章

你现在应该收藏的 19 个最佳科技网站

你现在应该收藏的 19 个最佳科技网站

你做的数据可视化太普通?这20个高质量的外国网站赶紧收藏

你做的数据可视化太普通?这20个高质量的外国网站赶紧收藏

全网良心论文复现!Centos 7.9 复现MAPPO出现的问题汇总收藏干货

Java零基础小白入门必做题汇总(建议收藏)第一篇