MongoDB如何将带表达式的switch/case转换为java驱动程序语法?
我根据当前文档中的某些条件计算了一个投影字段。本机mongo查询工作正常。但是我不能在java驱动程序3.4中实现查询。只有java驱动程序3.4语法是相关的 来自开关的字段结果的投影代码为: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" : {
"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相同。大多数人都明白这一点。