我有一个集合twitter
,其中包含email
_id
和token
字段为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}}
答案 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)
要检查null
和empty
值,您还可以使用$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.