我是新来的都吗啡和MongoDB。有没有一种方法来检查使用吗啡,在我的数据库中的某一个领域是不是null
也存在。例如从用户的集合在数据库中的用户的以下记录:吗啡MongoDB的检查null和非现有字段
{ "_id" : ObjectId("51398e6e30044a944cc23e2e"),
"age" : 21 ,
"createdDate" : ISODate("2013-03-08T07:08:30.168Z"),
"name" : "Some name" }
我将如何使用吗啡查询,以检查是否领域"createdDate"
不是null存在。
编辑: 我正在寻找Morphia的解决方案。到目前为止,我想出了这一点:
query.and(query.criteria("createdDate").exists(),
query.criteria("createdDate").notEqual(null));
从技术文档,我学到了吗啡不存储空或空字段。因此为notEqual(null)
的理由。
编辑2:从答案我可以看到问题需要更多的解释。我无法修改createdDate
。详细说明:上面的例子并不比我的实际问题复杂。我真正的问题是我无法修改的敏感领域。另外要的东西多一点复杂,我没有在模型的控制,否则作为一个答案建议我可以用@PrePersist
。
有没有一种方法来检查null和非现有的现场时,我有过的模型中没有控制,我不允许修改字段?
感谢您指出我的错误并详细解释了解决方法。尽管有一个问题,我无法修改'createdDate'。详细说明:上面的例子并不比我的实际问题复杂。我真正的问题是我无法修改的敏感领域。此外,让事情复杂一点,我不能控制模型,否则我同意你的解决方案'@ PrePersist'。有其他解决方法吗? – Segmented
@Segmented恐怕我不知道上面的任何其他解决方法,似乎修改文档是要走的路,但是再一次它超出了你的控制范围。我只能想到另一种解决方法,您可以查询“createdDate”存在的文档,并且不在特定的日期范围内,比如从现在到新纪元开始(即新日期(0))。这样你可以捕获空值? – chridam
非常感谢你的支持和我的复杂问题。尽管你的解决方案听起来很诱人(关于'createdDate'属于特定的日期范围),我很想寻找一些通用的解决方案。在我接受你的解决方案之前,我希望你能和你在一起... – Segmented