#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’.