使用QueryBuilder在mongoDb中获取记录时:
DBObject query = QueryBuilder.start("field1).is("foo").and("field2").is("bar").get();
有时isDeleted属性将记录在案,
但有时它不会存在,
我如何使用QueryBuilder告诉MongoDb获取isDeleted属性不为真的记录,或者不在那里..
使用表达式我可以做到:
myOr.add(new BasicDBObject("isDeleted", bool));
myOr.add(new BasicDBObject("isDeleted", new BasicDBObject("$exists", bool)));
DBObject query = baseFilter.append("$or", myOr);
答案 0 :(得分:1)
您基本上需要以下mongodb查询
var query = {
"$or": [
{ "isDeleted": false },
{ "isDeleted": { "$exists": false } }
]
}
db.collection.find(query)
使用 QueryBuilder
,这将转换为
QueryBuilder query = new QueryBuilder();
query.or(
QueryBuilder.start("isDeleted").is(false).get(),
QueryBuilder.start("isDeleted").exists(false).get()
);
DBCursor cursor = collection.find(query.get());