当前位置: 首页 > 面试题库 >

Mongodb $ lookup动态集合

仲孙绍元
2023-03-14
问题内容

我有以下架构,其中项目类型可能有所不同,并在中提到connections.kind

var userSchema = new Schema({
  name: String,
  connections: [{
    kind: String,
    item: { type: ObjectId, refPath: 'connections.kind' }
  }]
});

var organizationSchema = new Schema({ name: String });

我正在尝试进行动态查找,以便填充item对象。但这似乎不起作用。

db.users.aggregate([
    {
        $lookup:{
            from: '$connections.kind',
            localField: 'connections.item',
            foreignField: '_id',
            as: 'items'
        }
    }
])

我知道我可以使用mongoose.populate,但想知道是否可以使用$
lookup


问题答案:

到目前为止,您还不能。该from字段不能是表达式,而必须是字符串文字。但是,您可以在这里跟踪一个未解决的问题,该问题似乎恰恰是您所需要的:https
:
//jira.mongodb.org/browse/SERVER-22497。



 类似资料:
  • wend尝试此查询,返回查找为空 返回json 我尝试了这篇文章,但没有发生MongoDB将项目字符串聚合到ObjectId和这个MongoDB$lookup在PHP中使用_id作为foreignField 更新 这是文档“用户”

  • 问题内容: 我有两个模型,用户模型和时间表,我想用$ lookup 和猫鼬把这两个模型结合起来。 用户(型号) 时间表(型号) 现在我的查询使用猫鼬: 用户汇总 我的查询结果是一个空的array(),如下所示: 查询结果: 我不知道为什么,但是查询结果是一个 空数组 ,我试图使用$ unwind和$ match,但也无法正常工作。 编辑: 用户集合 时间表的收集 问题答案: 猫鼬在创建时将集合名称

  • 问题内容: 我是mongodb的新手,并在下面的文档中使用mongoose进行练习,并且遇到了一个非常令人困惑的问题。 我有用户架构 评论模式 和模型 然后我做 但是我在查询中得到空的共同点。根据数据库中的数据,我不应该得到这个结果。搜索后,我仍然找不到错误所在。 最后但并非最不重要的一点是,我需要使用方法,因此我必须在参考文件上使用,是否有意义? 问题答案: $ lookup中的字段是集合名称,

  • 我是聚合框架的新手,有以下问题。 我的收藏是这样的: 用户 ActivitiesFeed 活动 聚合函数 如何使用第一个查找结果进行查找? 我查阅了activities集合。此集合保存第二个查找BaseData.UserID的id。但是使用这种方法,第二次查找没有结果。 我对activities集合进行连接的原因是actionID可以保存来自另一个集合的用户id或文档id。它取决于activiti

  • 多亏了这里的人的帮助,我成功地在我的文档中找到了两个ID,并在另一个集合中找到了他们的代表文档。我需要采取的下一步是进一步查找一个“嵌套”ID(引用另一个集合中的文档)。 其结果如下: 我希望chieftain部分是这样的(这就是没有添加'last'$lookup'的chieftain文档的样子):