我是新來的都嗎啡和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