java - MongoDb 如何获取缺少属性的行

标签 java mongodb mongodb-query

查找未删除的行时,我使用以下文件管理器:

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/

相关文章:

python - $ne 不适用于 pymongo

java - 存储用户创建的帐户的用户/密码?

MongoDB:将文件保存在内存而不是磁盘上

java - 加入 hibernate 状态

javascript - Node.js 回调不执行

node.js - 抛出新的 mongoose.Error.MissingSchemaError(name); ^ Mongoose 错误: Schema hasn't been registered for model "merchant"

MongoDB聚合: unwind and keep roots as seperate documents

mongodb - mongo 将单个对象转换为一个元素数组

java - JSF 2.0 和 hibernate 将新对象添加到 postgresql 数据库

java - 如何避免 Set<Object> 中的重复