当前位置: 首页 > 知识库问答 >
问题:

Mongoose聚合返回不需要的空数组

全丰
2023-03-14

我有两个模型;一个用于用户,另一个用于学习组。每个StudyGroup都有一个唯一的GUID字段。用户模型有一个studyGroups字段,它是字符串GUID的数组。一个用户可以加入多个学习组。

用户模型

 const userSchema = new Schema({
  cuid: { type: 'String', required: true },
  firstName: { type: 'String', required: true },
  lastName: { type: 'String', required: true },
  studentId: { type: 'Number', required: true },
  password: { type: 'String', required: true },
  email: { type: 'String', required: true },
  dateAdded: { type: 'Date', default: Date.now, required: true },
  lastLogin: { type: 'Date', default: null, required: false },
  studyGroups: [{ type: 'String' }],
});  
const studyGroupSchema = new Schema({
  guid: { type: 'String', required: true },
  groupName: { type: 'String', required: true },
  course: { type: 'String', required: true },
  teacher: { type: 'String', required: true },
  description: { type: 'String', required: true },
  dateAdded: { type: 'Date', default: Date.now, required: true },
  chatMessages: [{ type: 'String' }],
});
export function getUserStudyGroups(req, res) {
  User.aggregate([
    { "$unwind": "$studyGroups" },
    {
      "$lookup": {
        "from": "studyGroups",
        "localField": "studyGroups",
        "foreignField": "cuid",
        "as": "resultingStudyGroupsArray"
      }
    },
    { "$unwind": "$resultingStudyGroupsArray" },
    {
      "$group": {
        "_id": null,
        "myStudyGroups": { "$addToSet": "$resultingStudyGroupsArray" },
        "count": { "$sum": 1 }
      }
    }
  ]).exec(function(err, results){
    console.log(results);
    return res.json({ studyGroups: results });
  });
}

共有1个答案

曾嘉言
2023-03-14

foreignfield应为GUID

export function getUserStudyGroups(req, res) {   User.aggregate([
    { "$unwind": "$studyGroups" },
    {
      "$lookup": {
        "from": "studyGroups",
        "localField": "studyGroups",
        "foreignField": "guid",
        "as": "resultingStudyGroupsArray"
      }
    },
    { "$unwind": "$resultingStudyGroupsArray" },
    {
      "$group": {
        "_id": null,
        "myStudyGroups": { "$addToSet": "$resultingStudyGroupsArray" },
        "count": { "$sum": 1 }
      }
    }   ]).exec(function(err, results){
    console.log(results);
    return res.json({ studyGroups: results });   }); }
 类似资料:
  • 但邮差回信说: 知道为什么或如何进一步调试它吗?Spring data-elasticsearch在做我不明白的事情吗? 我应该期待这样的事情:

  • 问题内容: 我正在使用ES 1.4。当我执行聚合时,结果也会返回hits数组。有没有办法只返回聚合? 问题答案: 有可能的。您应该在网址中键入其他参数( ?search_type = count )。在这里看看:http : //www.elasticsearch.org/guide/en/elasticsearch/reference/current/search- aggregations.h

  • 我有一个如下的猫鼬模式: 我已经获取了所有具有给定id的特定用户发表评论的帖子,即所有那些评论数组中包含uid等于给定uid的对象的文档。例如,假设用户id为101,则查询结果可能如下所示: 为了更好地理解一切,我想获取所有那些特定用户评论过的帖子,甚至回复过的帖子,以及只有该用户的评论和回复。 我所能做的就是: 此查询仅返回相应帖子的第一个匹配的评论项数组。我想要所有符合条件的物品。 请帮助我为

  • 问题内容: 我已经尝试过使用并且都没有返回文档。是在返回一个空数组被返回。在这两种情况下也是如此。 这是我的联系: 这是我的架构: 我的查询在这里: 我可以将内容上传到数据库,并通过RockMongo进行查看,但之后无法获取它们。这是我第一次使用MongoDB,因此我认为我只是缺少一些基础知识。向正确方向的任何推动都是很棒的! 问题答案: 建立模型所绑定的集合的名称的调用,默认值为复数的小写模型名

  • 我正在查找与url匹配但返回自定义对象的记录。 我有这个模型。。 我想查询该模型并匹配url,但返回如下响应: 我需要能够通过将记录的ip与过程中的变量进行比较,动态计算反应的ip是否为真。 一次尝试是 但我似乎无法集中IP并查看我的变量IP是否在该数组中。 谢谢你的帮助。我第一次问!

  • 我有一个数据库,里面有澳大利亚800家不同的酒吧、俱乐部和餐馆。 我想为我的网站建立一个链接列表,统计不同郊区和主要类别的不同场馆的数量。 像这样: 餐厅,伯恩山(15家) 餐厅,道斯角(6家) 俱乐部,悉尼(138家) 我可以通过首先获得所有场馆来艰难地完成这项任务。然后运行一个场地。distinct('details.location.Suburban')获得所有独特的郊区。 从这里,我可以运