1
如何從數據存儲中刪除與查詢匹配的實體?有沒有辦法刪除一些匹配簡單查詢的對象?就像'現在刪除所有包含日期的對象'或者可能刪除所有包含屬性值爲[email protected]的電子郵件的實體?如何從AppEngine數據存儲中刪除與查詢匹配的實體?
請在Java中提供您的答案,如果可能的話?
如何從數據存儲中刪除與查詢匹配的實體?有沒有辦法刪除一些匹配簡單查詢的對象?就像'現在刪除所有包含日期的對象'或者可能刪除所有包含屬性值爲[email protected]的電子郵件的實體?如何從AppEngine數據存儲中刪除與查詢匹配的實體?
請在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());
}
所以從我可以,我不得不做2調用數據存儲一個獲取相匹配的查詢,第二個要刪除提供有鍵實體的實體的鑰匙? – Adelin
是的。究竟。如何在一次通話中做到這一點是沒有辦法的。 – musketyr