Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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如何将带表达式的switch/case转换为java驱动程序语法?_Java_Mongodb_Switch Statement - Fatal编程技术网

MongoDB如何将带表达式的switch/case转换为java驱动程序语法?

MongoDB如何将带表达式的switch/case转换为java驱动程序语法?,java,mongodb,switch-statement,Java,Mongodb,Switch Statement,我根据当前文档中的某些条件计算了一个投影字段。本机mongo查询工作正常。但是我不能在java驱动程序3.4中实现查询。只有java驱动程序3.4语法是相关的 来自开关的字段结果的投影代码为: "SITUACAO": { "$switch" : { "branches": [ { case: {"$eq": ["$ID_STATUSMATRICULA", 0]}, then: { "$switch" : {

我根据当前文档中的某些条件计算了一个投影字段。本机mongo查询工作正常。但是我不能在java驱动程序3.4中实现查询。只有java驱动程序3.4语法是相关的

来自开关的字段结果的投影代码为:

"SITUACAO": {
"$switch" : {
    "branches": [
        { case: {"$eq": ["$ID_STATUSMATRICULA", 0]},
          then: {
                "$switch" : {
                    "branches": [
                        { case: {"$and": [{"$eq": ["$NR_ANDAMENTO", 0 ] },
                                          {"$eq": ["$ID_STATUSMATRICULA", 0]} ] }, then: "NAOINICIADO" },

                        { case: {"$and": [{"$gt": ["$NR_ANDAMENTO", 0]},
                                          {"$lte": ["$NR_ANDAMENTO", 100]},
                                          {"$eq": ["$ID_STATUSMATRICULA", 0]} ] }, then: "EMANDAMENTO" }
                    ],
                    "default": "--matriculado--"
                }
            }
        },
        { case: {"$eq": ["$ID_STATUSMATRICULA", 1]},
          then: {
                "$switch" : {
                    "branches": [
                        { case: {"$and": [ {"$eq": ["$ID_STATUSMATRICULA", 1]},
                                           {"$in": ["$ID_STATUSAPROVEITAMENTO", [1] ]} ] }, then: "APROVADO" },
                        { case: {"$and": [ {"$eq": ["$ID_STATUSMATRICULA", 1]},
                                           {"$in": ["$ID_STATUSAPROVEITAMENTO", [2] ]} ] }, then: "REPROVADO" },
                        { case: {"$and": [{"$eq": ["$ID_STATUSMATRICULA", 1]},
                                          {"$in": ["$ID_STATUSAPROVEITAMENTO", [0] ]} ] }, then: "PENDENTE" },
                        { case: {"$and": [ {"$eq": ["$ID_STATUSMATRICULA", 1]},
                                           {"$in": ["$ID_STATUSAPROVEITAMENTO", [1,2] ]} ] }, then: "CONCLUIDO" }
                    ],
                    "default": "--concluido--"
                }
            }
        }
    ],
    "default": "--indefinida--"
}
}

我可以这样画$1周围的部分和机箱内的状态:

    List<Document> docs = new ArrayList<>();
    docs.add( new Document("$eq", asList("$NR_ANDAMENTO", 0)) );
    docs.add( new Document("$eq", asList("$ID_STATUSMATRICULA", 1)) );
    Document doc = new Document("$and", docs);
List docs=new ArrayList();
添加文件(新文件($eq),asList($NR_ANDAMENTO,0));
添加(新文档($eq),asList($ID_STATUSMATRICULA),1));
单据单据=新单据(“$and”,单据);
但是,结构$switch/branchs[]/case。。。很难找到写作的方法。 有人有这样的例子或者写这个的想法吗?
谢谢

什么这么难?简单指南。当您看到
{}
时,表示使用
文档
。当您看到
[]
时,表示使用
列表。这就是你所需要做的。另一个提示。使用与JavaScript表示法相同的缩进和嵌套模式。当你偏离了这种“相同性”时,大多数人在使用强类型语言(如Java)进行翻译时就会出错。只要保持相同的缩进,遵循其他替换规则,你就不会真的出错。换句话说。就像在JavaScript中一样,在一个块中写出所有内容。通过为单独的部分声明单独的变量,您只会混淆自己。以及以后阅读代码的其他人。如果它看起来与JSON相同,那么它“读取”的内容与JSON相同。大多数人都明白这一点,有什么困难?简单指南。当您看到
{}
时,表示使用
文档
。当您看到
[]
时,表示使用
列表。这就是你所需要做的。另一个提示。使用与JavaScript表示法相同的缩进和嵌套模式。当你偏离了这种“相同性”时,大多数人在使用强类型语言(如Java)进行翻译时就会出错。只要保持相同的缩进,遵循其他替换规则,你就不会真的出错。换句话说。就像在JavaScript中一样,在一个块中写出所有内容。通过为单独的部分声明单独的变量,您只会混淆自己。以及以后阅读代码的其他人。如果它看起来与JSON相同,那么它“读取”的内容与JSON相同。大多数人都明白这一点。