我坚持实施'如果条件'在java中我不知道如何做到这一点,那么给出一些建议
db.test.aggregate(
[
{
$project:
{
data: 1,
result:
{
$cond: { if: { $cond: [ "$salary", 250000 ] }, then: 30, else: 20 }
}
}
}
]
)
答案 0 :(得分:1)
只需Documents
和List
s
List<Document> pipeline = Arrays.asList(
new Document("$project",
new Document("data1", 1)
.append("result", new Document(
"$cond", new Document(
"if", new Document("$eq", Arrays.asList("$salary", 250000) )
)
.append("then", 30)
.append("else", 20)
))
)
);
序列化为:
[
{ "$project": {
"data1": 1,
"result": {
"$cond": {
"if": { "$eq": [ "$salary", 250000 ] },
"then": 30,
"else": 20
}
}
}}
]
或者使用&#34;列表&#34;形式$cond
:
List<Document> pipeline = Arrays.asList(
new Document("$project",
new Document("data1", 1)
.append("result", new Document(
"$cond", Arrays.asList(
new Document("$eq", Arrays.asList("$salary", 250000) ),
30,
20
)
))
)
);
序列化为:
[
{ "$project": {
"data1": 1,
"result": {
"$cond": [
{ "$eq": [ "$salary", 250000 ] },
30,
20
}
}
}}
]
两者都是$cond
的有效用法。
同时注意到您的问题中的错误,您可能意味着$eq
或者您可能意味着$gt
或其他逻辑运算符。 $cond
期待它&#34;如果&#34;返回一个布尔值。
根据驱动程序的不同,您可以将Document
改为BasicDBObject
。