MongoDB Aggregate - 如果匹配则排除,带有扭曲

时间:2017-08-03 13:33:55

标签: arrays mongodb mongodb-query aggregation-framework

我的目标是找到符合用户选择的歌曲。用户有机会排除他不喜欢的类型。

This is basically a duplicate of this question,除了我希望能够在Aggregate操作而不是Find中执行此操作,因为我需要添加其他阶段。

现在,我正在尝试聚合以排除属于用户不喜欢的流派的歌曲。

我的歌json是这样的(请记住这是虚拟数据 - 但这首歌真的很棒):

{
    "_id": {
        "$oid": "5890aa3b0a9f110011698fac"
    },
    "artist": "Beach House", 
    "songName": "Master Of None",
    "genres": [
        {
            "$oid": "58624b4298fba881a46663a01"
        },
        {
            "$oid": "58624b9d98fba772a46663a05"
        }
    ]
}

一首歌可以有多种类型,存储在一个对象数组中,作为对不同集合中的类型文档的引用。

基本上,用户不喜欢的流派属于一系列流派$oid。 说

dislikedGenres = [ "786761gg1G176ga1", "78676187g1G176hsj3", "78676187g1G1761sj4" ]

我要做的是说“如果你找到一首有这些类型的歌曲,请把它排除在外”。

知道怎么做到这一点?我觉得我错过了一些非常明显的东西......

提前感谢您的帮助!非常感激。 如果您需要额外信息,请发表评论。

0 个答案:

没有答案