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

How to query whether a field exists in the collection using _id in mongodb using 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 中编写查询,其中 returns true 仅当 token 值存在于所有其他情况下 return false token 值是否为 null 或 empty。例如,在上面的推特集合中,"_id":"abc@gmail.com" 应该是 return true"_id":"jkl@gmail.com"

应该是 false

您可以在这些问题上使用 $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

要同时检查 nullempty 值,您还可以使用 $nin operator.For 示例

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.