MongoDB, как указать ‘undefined’ в драйвере Java? (значение null не сработало)

#java #mongodb #aggregation-framework

#java #mongodb #агрегация-фреймворк

Вопрос:

Рассмотрим следующий пример агрегированного запроса, чтобы узнать, существует поле или нет:

 db.coll.aggregate({"$project":{"exists":{ "$cond" : [ {"$eq": ["$fieldName", undefined] } , "true" ,  "false" ]}}})
  

Этот агрегат работает так, как ожидалось в оболочке mongo. Но использование null вместо undefined не сработало в оболочке mongo (почему?), как показано ниже:

 db.coll.aggregate({"$project":{"exists":{ "$cond" : [ {"$eq": ["$fieldName", null] } , "true" ,  "false" ]}}})
  

Я хочу использовать эту операцию через драйвер Java.
Но я не знаю, как преобразовать это в драйвер Java, поскольку у него нет undefined . Использование null вместо undefined также не сработало в java..

Почему это разработано таким образом?

Комментарии:

1. Есть ли причина, по которой вы не используете $exists оператор? docs.mongodb.org/manual/reference/operator/query/exists Вы также можете захотеть проверить: docs.mongodb.org/manual/faq/developers /…

2. Что вы планируете делать с результирующим полем? Могут быть другие способы добраться туда.

3. Я хочу установить другое поле на основе значения этого поля. Например, если в этом поле есть ‘A’, то установите поле ‘type’ как type1, иначе, если ‘B’, то установите как ‘type2’, иначе, если поле не существует, установите как ‘type3’.