Я новичок как в Morphia, так и в MongoDB. Есть ли способ проверить с помощью Morphia, что определенное поле в моей базе данных не является null
, а также существует. Например, из следующей записи пользователя из коллекции пользователей в базе:Morphia MongoDB проверить нулевое и не существующее поле
{ "_id" : ObjectId("51398e6e30044a944cc23e2e"),
"age" : 21 ,
"createdDate" : ISODate("2013-03-08T07:08:30.168Z"),
"name" : "Some name" }
Как бы использовать запрос морфия, чтобы проверить, если поле "createdDate"
не равно нулю и существует.
EDIT: Я ищу решение в Морфии. До сих пор я придумал следующее:
query.and(query.criteria("createdDate").exists(),
query.criteria("createdDate").notEqual(null));
Из документации я узнал, что Morphia не хранит пустое или нулевое поля. Отсюда и обоснование для notEqual(null)
.
EDIT 2: Из ответов я вижу, что проблема требует большего объяснения. Я не могу изменить createdDate
. Чтобы разработать: приведенный выше пример менее сложный, чем моя фактическая проблема. У моей реальной проблемы есть чувствительные поля, которые я не могу изменить. Кроме того, чтобы усложнить ситуацию немного, у меня нет контроля над моделью, иначе я мог бы использовать @PrePersist
, как было предложено в одном из ответов.
Есть ли способ проверить нулевое и не существующее поле, если у меня нет контроля над моделью, и мне не разрешено изменять поля?
Спасибо, что указали мою ошибку и подробное объяснение обходного пути. Однако есть один улов, я не могу изменить 'createdDate'. Чтобы разработать: приведенный выше пример менее сложный, чем моя фактическая проблема. У моей реальной проблемы есть чувствительные поля, которые я не могу изменить. Также, чтобы усложнить ситуацию немного, у меня нет контроля над моделью, иначе я согласен с вашим решением '@ PrePersist'. Есть ли другой способ обхода? – Segmented
@Segmented Боюсь, я не знаю никого другого обходного пути за пределами вышеприведенного, похоже, что изменение документов - это путь, но потом снова это не поддается контролю. Я мог только подумать о другом обходном пути, где вы можете запросить документы, где 'createdDate' существует AND, и не попадает в определенный диапазон дат, скажем, между настоящим и началом эпохи, то есть новой Date (0). Таким образом, вы можете поймать нулевые значения? – chridam
Большое вам спасибо за то, что вы со мной и мои сложные проблемы. Насколько ваше решение кажется мне заманчивым (о 'createdDate' попадает в определенный диапазон дат), мне бы хотелось найти какое-то общее решение. Я надеюсь, что с вами все в порядке, прежде чем я приму решение ... – Segmented