Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 使用$lookup运算符连接条件_Mongodb_Mongodb Query_Aggregation Framework - Fatal编程技术网

Mongodb 使用$lookup运算符连接条件

Mongodb 使用$lookup运算符连接条件,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我有两个模式:bucLaunch-其中存储了与其他业务用例的业务用例关系。和businessUseCase模式,其中是关于businessUseCase的信息(名称、描述、状态等)。一个businessUseCase可以与其他businessUseCase有多个关系,我需要获得一个businessUseCase列表,该列表的状态不是“关闭”状态,并且bucklaunch.businessUseCase等于businessUseCase的特定Id。\u Id 我只到了这一点,我不知道为什么,但仍然

我有两个模式:bucLaunch-其中存储了与其他业务用例的业务用例关系。和businessUseCase模式,其中是关于businessUseCase的信息(名称、描述、状态等)。一个businessUseCase可以与其他businessUseCase有多个关系,我需要获得一个businessUseCase列表,该列表的状态不是“关闭”状态,并且bucklaunch.businessUseCase等于businessUseCase的特定Id。\u Id

我只到了这一点,我不知道为什么,但仍然返回“关闭”状态

bucLaunch对象如下所示:

    {
        "_id" : ObjectId("5cab7e9063f03228c0c74acf"),
        "businessUseCase" : "111111111111111111111111",
        "launchingBusinessUseCase" : "222222222222222222222222"
    }
    {
        "_id" : ObjectId("222222222222222222222222"),
        "name" :  "Name",
        "desc" : "Description",
        "state" : "closed"
    }
    [{
        "_id" : ObjectId("333333333333333333333333"),
        "name" : "Name2",
        "desc" : "Description2",
        "state" : "inProgress"
    }]
businessUseCase对象如下所示:

    {
        "_id" : ObjectId("5cab7e9063f03228c0c74acf"),
        "businessUseCase" : "111111111111111111111111",
        "launchingBusinessUseCase" : "222222222222222222222222"
    }
    {
        "_id" : ObjectId("222222222222222222222222"),
        "name" :  "Name",
        "desc" : "Description",
        "state" : "closed"
    }
    [{
        "_id" : ObjectId("333333333333333333333333"),
        "name" : "Name2",
        "desc" : "Description2",
        "state" : "inProgress"
    }]
如果会出现另一个业务用例,如:

    {
        "_id" : ObjectId("333333333333333333333333"),
        "name" : "Name2",
        "desc" : "Description2",
        "state" : "inProgress"
    }
和另一个关系对象,如:

    {
        "_id" : ObjectId("5cab7e9063f03228c0c74acf"),
        "businessUseCase" : "111111111111111111111111",
        "launchingBusinessUseCase" : "333333333333333333333333"
    }
我只希望看到未关闭状态的businessUseCase列表,如下所示:

    {
        "_id" : ObjectId("5cab7e9063f03228c0c74acf"),
        "businessUseCase" : "111111111111111111111111",
        "launchingBusinessUseCase" : "222222222222222222222222"
    }
    {
        "_id" : ObjectId("222222222222222222222222"),
        "name" :  "Name",
        "desc" : "Description",
        "state" : "closed"
    }
    [{
        "_id" : ObjectId("333333333333333333333333"),
        "name" : "Name2",
        "desc" : "Description2",
        "state" : "inProgress"
    }]
那么,如果我想为一个特定的业务用例获取所有相关的业务用例呢?如果我想获取特定businessUseCase(id:111111111111111111)的数据,我希望得到如下结果:

    {
        "_id" : ObjectId("111111111111111111111111"),
        "name" :  "Name1",
        "desc" : "Description1",
        "state" : "closed",
        "notClosedRelatedBucList": [
            {
            "_id" : ObjectId("222222222222222222222222"),
            "name" : "Name2",
            "desc" : "Description2",
            "state" : "inProgress"
            },
            {
            "_id" : ObjectId("444444444444444444444444"),
            "name" : "Name2",
            "desc" : "Description2",
            "state" : "inProgress"
            },
            ...
        ]
    }

问题出现在聚合管道的最后阶段(
$match
):

{
    $match: { "output.state": { $ne: ["closed"] } }
}
在这里,您试图将
状态
[“closed”]
(这是一个数组)匹配,这就是为什么它不匹配状态为
的文档:“closed”
,并且它也返回这些文档的原因。您应该尝试将其与“closed”(字符串)匹配

在$match阶段尝试以下操作:

{
    $match: { "output.state": { $ne: "closed" } }
}
它应该对你有用。希望有帮助

或者,如果要与一个或多个字符串匹配
(字符串数组)
,则应使用
$nin
而不是
$ne

{
    $match: { "output.state": { $nin: ["closed"] } }
}

有关和的更多信息,请阅读。

问题出现在聚合管道的最后阶段(
$match
):

{
    $match: { "output.state": { $ne: ["closed"] } }
}
在这里,您试图将
状态
[“closed”]
(这是一个数组)匹配,这就是为什么它不匹配状态为
的文档:“closed”
,并且它也返回这些文档的原因。您应该尝试将其与“closed”(字符串)匹配

在$match阶段尝试以下操作:

{
    $match: { "output.state": { $ne: "closed" } }
}
它应该对你有用。希望有帮助

或者,如果要与一个或多个字符串匹配
(字符串数组)
,则应使用
$nin
而不是
$ne

{
    $match: { "output.state": { $nin: ["closed"] } }
}

请阅读更多关于和的信息以了解更多详细信息。

它很有效,谢谢!我想我试过了,但可能没有。有没有办法得到我们要求的业务用例,并且在“relatedBucList”之类的键下有相关的未关闭的业务用例?结果应该如下所示:``{//main buc“\u id”:ObjectId(“333”),“name”:“Name2”,“desc”:“Description2”,“state”:“inProgress”,“relatedNotClosedBucList”:[{“name”:“name”,“desc”:“desc”,state”:”在程序中,}]}``我不能正确理解你的问题,你能编辑这个问题并告诉我你想要的结果吗。\Hi,你能帮我吗?我编辑了这个问题。或者我可以亲自联系你吗?你可以通过邮件联系我ravishnkr110@gmail.comIt很好,谢谢!我想我试过了,但可能没有。有没有办法得到我们要求的业务用例,并且在“relatedBucList”之类的键下有相关的未关闭的业务用例?结果应该如下所示:``{//main buc“\u id”:ObjectId(“333”),“name”:“Name2”,“desc”:“Description2”,“state”:“inProgress”,“relatedNotClosedBucList”:[{“name”:“name”,“desc”:“desc”,state”:”在程序中,}]}``我不能正确理解你的问题,你能编辑这个问题并告诉我你想要的结果吗。\Hi,你能帮我吗?我编辑了这个问题。或者我可以亲自联系你吗?你可以通过邮件联系我ravishnkr110@gmail.com