java - 如何从 AppEngine 数据存储中删除与查询匹配的实体?

标签 java google-app-engine google-cloud-datastore

如何从数据存储中删除与查询匹配的实体?有没有办法删除一些与简单查询匹配的对象?就像“删除现在之前日期的所有对象”或者可能删除具有值 mail@mail.com 的属性 email 的所有实体?

如果可能的话,请用java提供您的答案?

最佳答案

不幸的是,Java API 不提供删除所有功能。您需要迭代查询结果,然后删除所有实体。

AsyncDatastoreService ds = DatastoreServiceFactory.getAsyncDatastoreService();

// create query for your kind
Query query = new Query("Kind");

// we don't need anything else than the key
query.setKeysOnly();

// set the filter for date before now 
query.setFilter(
    new FilterPredicate(
        "date", 
        FilterOperator.LESS_THAN_OR_EQUAL, 
        new Date()));

PreparedQuery pq = ds.prepare(query);

// asIterable is more efficient than asList
for (Entity en : pq.asIterable()) {
    // delete each entity
    ds.delete(en.getKey());
}

关于java - 如何从 AppEngine 数据存储中删除与查询匹配的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20181778/

相关文章:

java - 我可以在 Java 中使用子类对象作为参数来覆盖吗?

java - 谷歌云平台不返回任何内容

java - 如何向数据库添加标签

java - 如何使用 Netbeans 和 MySQL 为 Java 应用程序创建 exe 文件 devolop

java - Maven 不获取依赖 jar

python - 在 Google App Engine NDB 中按字符串选择列

java - 应用程序引擎 Java : syntax for setting query limit and start offset.

android - Web 服务凭据 - OpenID/Android AccountManager?

java - 使用 GWTP 创建表

google-app-engine - App Engine 忽略我的源代码更新和我的 app.yaml 文件