95
如何搜索缺少MongoDB中某個字段的集合中的文檔?Mongo:找到沒有特定字段的項目
如何搜索缺少MongoDB中某個字段的集合中的文檔?Mongo:找到沒有特定字段的項目
是的,它可能使用$exists:
db.things.find({ a : { $exists : false } }); // return if a is missing
如果是真的,$存在包含字段,包括在字段值爲空文件的文件相匹配。如果爲false,則查詢僅返回不包含該字段的文檔。
如果你不在乎,如果該字段缺少或null
(或者,如果它永遠不會null
),那麼你可以用略短和更安全:
db.things.find({ a : null }); // return if a is missing or null
它是安全的,因爲$exists
將返回true
即使該字段爲空,這往往不是預期的結果,並且可能導致NPE。
被警告,'$ exist'查詢不能使用索引(請參閱http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24exists)。 – Theo 2011-04-19 17:03:30
@Theo:從MongoDB 2.0開始,存在$ exists是可以使用索引的(https://jira.mongodb.org/browse/SERVER-393) – 2011-11-23 15:48:30
我是在這之後爲Mongoid在範圍中使用的。看起來像這樣:''scope:without_recommendation,:where => {:recommendation => {「$ exists」=> false}}''' – genkilabs 2012-06-15 01:15:00