查找未删除的行时,我使用以下文件管理器:
DBCursor myCursor=collection.find(new BasicDBObject("companyId",companyId)
.append("isDeleted",Boolean.FALSE))
问题是某些记录没有“isDeleted”列,因此(我认为)这就是它们没有出现在列表中的原因
如何使用 isDeleted= false 包含两条记录
并记录 isDeleted 属性缺失的地方?
最佳答案
你基本上想要 $exists
运算符(operator)。但可能与$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);
“$exists”基本上询问指定字段是否“存在”,具体取决于您指定为参数的 true|false
值。
请注意,$exists
不会询问索引。最好的选择是确保每个文档实际上都有包含可以查询的值的字段。
关于java - MongoDb 如何获取缺少属性的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26814711/