MongoDb isDeleted属性 - 并不总是存在

时间:2016-01-11 03:19:05

标签: mongodb

使用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);    

1 个答案:

答案 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());