【问题标题】:Link a model with 'hasMany' to a model with an array将带有“hasMany”的模型链接到带有数组的模型
【发布时间】:2019-01-15 11:31:47
【问题描述】:

我有 2 个简单的模型:

    Person:
     - id: "1234"
     - name: "John"

    Jobs:
     - title: "Programmer"
     - personList:[{
         - personId: "1234"
         - personName: "John"
       },
       {
         ... another person
       }]

简而言之,我想运行这个简单的查询:

    http://example.com/person?filter={"include":"jobs"}

所以我可以将 Person 模型链接到 Jobs 模型,然后也可以简单地获取所有 person 工作。

通常,您会使用 hasMany 关系来做到这一点,但如果它是一个对象数组,如何实现呢?

【问题讨论】:

    标签: mongodb loopback


    【解决方案1】:

    您可以使用以下聚合管道到$lookup 作业集合并返回匹配的作业

    在 mongo 3.6 及更高版本中

    db.person.aggregate([
        {$lookup : {
            from : "jobs", 
            let : {"personId" : "$id"}, 
            pipeline : [
                {$match : {"$expr" : {$in : ["$$personId", "$personList.personId"]}}},
                {$addFields : {personList : {$filter : {input : "$personList", as : "p", cond : {$eq : ["$$personId", "$$p.personId"]}}}}}
            ],
            as : "jobs"
        }}
    ]).pretty()
    

    【讨论】:

    • 谢谢你,我最终做到了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 2013-12-12
    • 1970-01-01
    相关资源
    最近更新 更多