首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >猫鼬递归地查找db中的元素

猫鼬递归地查找db中的元素
EN

Stack Overflow用户
提问于 2020-03-09 09:24:53
回答 1查看 132关注 0票数 1

我正在写一个查询来查找收藏中的视频“n‘no”。我设置了用户的初级、中级和三级语言集(假设泰米尔语(P)、印地语(S)、英语(T))。我想先找到主要语言的视频,如果返回的视频小于“n”,那么从第二语言搜索,最后从第三语言搜索。如果在任何阶段找到n个视频,那么就不需要进一步搜索。我来自c背景,所以我正在考虑使用递归,但是有什么方法可以在一个查询中找到视频。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-09 10:28:19

假设语言数量是静态的,您可以这样做。

代码语言:javascript
复制
var langs = ['hindi', 'tamil', 'english']; //arrange the languages in the priority you want
var limit = 5;

db.videos.aggregate(
    [
        {
            $group: {
                _id: null,
                vids: {
                    $push: '$$ROOT'
                }
            }
        },
        {
            $project: {
                vids: {
                    $concatArrays: [
                        {
                            $slice: [
                                {
                                    $filter: {
                                        input: "$vids",
                                        cond: { $eq: ["$$this.language", langs[0]] }
                                    }
                                }, limit
                            ]
                        },
                        {
                            $slice: [
                                {
                                    $filter: {
                                        input: "$vids",
                                        cond: { $eq: ["$$this.language", langs[1]] }
                                    }
                                }, limit
                            ]
                        },
                        {
                            $slice: [
                                {
                                    $filter: {
                                        input: "$vids",
                                        cond: { $eq: ["$$this.language", langs[2]] }
                                    }
                                }, limit
                            ]
                        }
                    ]
                }
            }
        },
        {
            $unwind: '$vids'
        },
        {
            $replaceWith: '$vids'
        },
        {
            $limit: limit
        }
    ])

确保在语言字段中添加索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60597652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档