如何在使用java的mongodb中使用\u id查询集合中是否存在字段?

lp0sw83n  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(306)

我有收藏 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 值为null或 empty . 例如,在上面的twitter集合中,它应该返回 true 为了 "_id":"@gmail.com" 以及 false 为了 "_id":"jkl@gmail.com"

fae0ux8s

fae0ux8s1#

用于检查两者 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.
n7taea2i

n7taea2i2#

你可以用 $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

相关问题