java - 如何将 $concat 与 $cond 与 MongoDB Java 驱动程序一起使用

标签 java mongodb

我想用 Java 做这样的事情:

           $concat: [
             "$$value",
             {
               $cond: {
                 if: { $eq: [ "$$value", "My hobbies include:" ] },
                 then: " ",
                 else: ", "
               }
             },
             "$$this"
           ]

来源:https://docs.mongodb.com/manual/reference/operator/aggregation/reduce/#string-concatenation

所以我的版本是:

    Document concat = new Document("$concat", Arrays.asList(
            "$$value",
            new Document("$cond", new Document()
                    .append("if", eq("$$value", ""))
                    .append("then", "")
                    .append("else", " - ")),
            "$$this.category"));

但它不起作用,我收到错误消息“'无法识别的表达式'$$value'”

有什么想法吗? 谢谢!

最佳答案

所以我找到了一个解决方案,但这并不完全是我想要的(我必须使用 BsonDocument):

    BsonArray eq = new BsonArray();
    eq.add(new BsonString("$$value"));
    eq.add(new BsonString(""));

    Document concat = new Document("$concat", Arrays.asList(
            new BsonString("$$value"),
            new BsonDocument("$cond", new BsonDocument()
                    .append("if", new BsonDocument("$eq", eq))
                    .append("then", new BsonString(""))
                    .append("else", new BsonString(" - "))),
            new BsonString("$$this.category")));

关于java - 如何将 $concat 与 $cond 与 MongoDB Java 驱动程序一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62023840/

相关文章:

c# - 使用 .NET Driver 2.4 在 MongoDB 上验证用户

Java安全策略限制RuntimePermission exitVM

java - AppEngine Java 全文。按日期排序适用于本地计算机,但未部署(SDK 1.6.6)

java - 在 JBoss Seam 中修剪输入

java - 覆盖java中的方法然后将对象转换为父类行为

java - 使用java计算选定时间段内的记录数

Mongodb 不同的计数,按多列分组的求和函数

javascript - 当我尝试通过连接到//localhost :3000, 来显示 html 页面时,显示错误,错误已作为片段上传

ruby-on-rails - Mongoid:返回 embedded_in 类

python - 在mongoDB(mongoengine)中按键获取列表中的字典