Как использовать $ concat с $ cond с драйверами MongoDB Java - PullRequest
0 голосов
/ 26 мая 2020

Я хочу сделать что-то подобное в Java:

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

Источник: https://docs.mongodb.com/manual/reference/operator/aggregation/reduce/#string -конкатенация

Итак, моя версия:

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

Но это не работает, у меня появляется сообщение об ошибке «'Unrecognized expression' $$ value '»

Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 26 мая 2020

Итак, я нашел решение, но это не совсем то, что я хотел (мне нужно использовать 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")));
...