如何使用java在mongodb中使用_id查询集合中是否存在字段?

时间:2015-01-15 07:21:48

标签: java mongodb mongodb-java

我有一个集合twitter,其中包含email _idtoken字段为string的文档。

{
    "_id":"abc@gmail.com",
    "token":"TWTR",
    "screen_name":"xyz",
    "location":"pqr"
}
{
    "_id":"jkl@gmail.com",
    "screen_name":"jkl",
    "location":"abc"
}

如何在java中编写查询,只有在所有其他情况下存在true值时返回token才返回false token值为空或empty }。例如,在上面的twitter集合中,它应返回true的{​​{1}}和"_id":"abc@gmail.com"的{​​{1}}

2 个答案:

答案 0 :(得分:4)

您可以使用$ne和" $ exists"这些事项中的运算符和count()方法:

private static boolean exist(DBCollection coll, String key)
{
    DBObject query = new BasicDBObject("token", new BasicDBObject( "$ne", "").append("$exists", true)).append("_id", key);

    return coll.count(query) == 1;      
}

exist(coll, "abc@gmail.com"); // true
exist(coll, "jkl@gmail.com"); // false

答案 1 :(得分:0)

要检查nullempty值,您还可以使用$nin运算符。例如

DBObject query = new BasicDBObject("token", new BasicDBObject("$nin", Arrays.asList("",null)));

$ nin选择以下文件:

- the field value is not in the specified array or
- the field does not exist.