8

当您更改应用程序引擎上的数据模型以添加新属性时,那些没有特定属性的条目将与<missing>在线数据查看器中的值一起列出。

我想知道如何编写查询来查找这些条目?

4

3 回答 3

8

没有直接的方法来查询缺少属性的旧实体,但您可以预先设计数据模型来支持这一点。为每个模型类添加一个version属性。版本应该有一个默认值,每次更改和部署模型类时都会增加该值。这样您就可以按版本号查询实体。

于 2010-09-08T12:14:45.357 回答
4

无法在数据存储中查询没有给定属性的实体。您需要遍历所有实体并检查每个实体——可能使用mapreduce API

于 2010-09-06T15:48:37.543 回答
0

或者,您可以使用低级数据存储 API 创建一个脚本,为所有当前不具有该属性的项目添加 null,这样您就可以查询 null。

我遇到了这个问题,这就是我解决它的方法。粗略的代码如下所示:

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
        Query query = new Query("JDOObjectType");
        List<Entity> results = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(9999));

        for (Entity lObject : results) {
            Object lProperty = lObject.getProperty("YOUR_PROPERTY");
            if (lProperty == null) {
                lObject.setProperty("YOUR_PROPERTY", null);
                datastore.put(lProperty);
            }
        }

    }
于 2014-01-06T21:57:44.793 回答