0

Это моя проекция этап агрегации:

Document filter = new Document(
          "$filter", new Document(
          "input", "$joins").append("as", "join").append(
          "cond", "{$eq: [\'$$join.exited\', false]}")); 
list.add(project(new Document("_id", 0).append("joins", filter).append("userName", 1) 
              .append("chatID", 1).append("warned", 1))); 

Но returnes элементы из joins которых их exited установлен в true (а также false).
Можете ли вы сказать мне, в чем моя ошибка?
(Следует отметить, что list является ArrayList стадий агрегации)

РЕДАКТИРОВАТЬ. Это один документ, я ожидаю:

{ 
    userName: "test", 
    //other fields than joins 
    joins: 
    [ 
     { 
      remaining: 4 
      userID: 1245 
      exited: false 
     }, 
     { 
      remaining: 3 
      userID: 2312 
      exited: false 
     } 
    ] 
} 

Я хочу exited быть ложными все время.

+0

Можете ли вы добавить образец документа, который ожидает ожидание запроса? – Veeram

ответ

1

Вы должны проанализировать значение документа, поскольку оно интерпретируется как буквальное строковое значение.

Update

"cond", "{$eq: [\'$$join.exited\', false]}") 

в

"cond", Document.parse("{$eq: [\'$$join.exited\', false]}") 

или

"cond", new Document("$eq", Arrays.<Object>asList("$$join.exited", false)) 

Оба варианта должны работать.

+0

Работал как шарм. благодаря –

Смежные вопросы