找到未删除的行时,我使用以下文件管理器:
DBCursor myCursor=collection.find(new BasicDBObject("companyId",companyId)
.append("isDeleted",Boolean.FALSE))
问题是有些记录没有“isDeleted”列,所以(我假设)这就是它们没有出现在列表中的原因
如何用isDeleted = false包含两个记录
并记录缺少isDeleted属性的位置?
答案 0 :(得分: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
值。
请注意$exists
不会询问索引。您最好的选择是确保每个文档实际上都有一个您可以查询的值的字段。