mongodb $ lookup数组子文档中的单个字段

ValYouW

说我有一个博客“帖子”集合,每个帖子可能都有一个related字段,该字段是相关博客帖子对象的数组,如下所示:

db.posts.insert([
   { "_id" : 1, "name" : "post 1"  },
   { "_id" : 2, "name" : "post 2"  },
   { "_id" : 3, "name" : "post with related", related: [{tagline: 'read post1', post: 1}, {tagline: 'more in post2', post: 2}]  }
])

现在,我想获取帖子,并使用$lookupAND字段来“扩展”“ related.post”tagline字段,我尝试了类似的方法,但是没有运气...

db.posts.aggregate([
    {$lookup: {
        from: 'posts',
        localField: 'related.post',
        foreignField: '_id',
        as: 'related.post'
    }}
])

有没有一种(简单的)方法来实现这一目标?谢谢!

莫阿扎姆·阿里夫(Moazzam Arif)

这个策略会起作用

db.posts.aggregate([
    {$lookup: {
        from: 'posts',
        localField: 'related.post',
        foreignField: '_id',
        as: 'posts'
    }},
    {$unwind: {
        path: '$related',
        preserveNullAndEmptyArrays: true
    }},
    {$addFields: {
        'related.post': {
            $filter: {
                input: '$posts',
                as: 'posts',
                cond: { $eq: ['$related.post', '$$posts._id'] }
            }
        }
    }},
    {$addFields: {
        'related.post': {$arrayElemAt: ['$related.post', 0]}
    }},
    {$group: {
        _id: '$_id',
        name: { $first: '$name' },
        related: { '$push': '$related' }
    }},
])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MongoDB Group操作返回文档,而不是单个字段

如何使用MongoDB中文档中的字段更新子文档数组中的字段?

在MongoDB中查找与对象数组中的多个字段匹配的文档

在MongoDB的单个字段中连接数组中的字符串值

在Mongoose / MongoDB中的子文档,数组,文档中过滤数组

在MongoDB中排除嵌入式文档中除单个字段之外的所有字段

如何在mongodb中的所有文档中的子文档数组中添加字段?

Mongodb聚合管道以从数组中返回带有$ lookup的多个字段

更新子文档中的数组-mongoose mongodb

从MongoDB中的同一数组返回包含两个字段的文档

查询Mongodb中的子文档数组

如何为MongoDB集合中的文档选择单个字段?

MongoDB检查数组的子文档中是否存在字段

MongoDB聚合,将子文档数组转换为单个对象

基于数组中的值的MongoDB查询并返回单个字段

MongoDb $ lookup在数组字段中嵌套文档

通过单个查询在文档和子文档中搜索Mongodb

mongodb aggrregate $ lookup数组中的字段

mongodb在单数组文档中插入字段

在一个字段中按数组查找mongodb中的文档?

如何使用C#驱动程序更新MongoDB中数组子文档中包含的数组子文档中的字段?

MongoDB更新数组中的错误子文档

MongoDB聚合:将单独的文档字段投影到单个数组字段中

在mongodb中排除子文档数组中的字段

mongoDB更新单个数组元素中的多个字段(来自表单)

从流星中的Mongodb文档返回一个字段(数组)的内容

更新MongoDB中的子文档数组

如何在MongoDb中查找与数组中的字段和子文档字段匹配的文档

Spring mongodb 如果单个字段在文档中的列表中匹配,则查找文档

TOP 榜单

热门标签

归档