2014-11-08 72 views
0

讀取行當發現不刪除的行,我用下面的過濾器:MongoDB中如何使用缺少財產

DBCursor myCursor=collection.find(new BasicDBObject("companyId",companyId) 
.append("isDeleted",Boolean.FALSE)) 

的問題是,一些記錄不具有「請將isDeleted」一欄,所以(我假設)這就是他們沒有出現在列表中的原因
如何使用isDeleted = false包含這兩個記錄
並記錄isDeleted屬性缺失的位置?

回答

1

你基本上想要$exists運算符。但是,可能再加上$or運營商既包括可能的值,其中一套或根本不存在:

BasicDBList myOr = new BasicDBList(); 
    myOr.add(new BasicDBObject("isDeleted", false)); 
    myOr.add(new BasicDBObject("isDeleted", new BasicDBObject("$exists", false))); 


    DBObject query = new BasicDBObject("companyId",1) 
     .append("$or", myOr); 

    DBCursor myCursor = collection.find(query); 

的「$存在」主要是讓指定的字段是否「存在與否」取決於true|false值你指定爲參數。請注意0​​不詢問索引。您最好的選擇是確保每個文檔實際上都有一個可以查詢的值。