PartitionKey partitionKey = new PartitionKey("undefined");
RequestOptions requestOptions=new RequestOptions();
requestOptions.setPartitionKey(partitionKey);
for(Document currentDocument: existingIMEIDevice){
try {
ConfigVariables.documentClient.deleteDocument(currentDocument.getSelfLink(), requestOptions);
} catch (DocumentClientException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SELECT c.partitionKey FROM c ORDER BY c.partitionKey
根据我的经验,如果您的集合没有分区键,则在操作数据库时不需要设置分区键的查询条件。
在post中,集合没有分区键,您将分区键设置为RequestOption。所以,数据库肯定不知道在哪里找到要操作的文档。
您可以参考我的代码片段:
import com.microsoft.azure.documentdb.*;
public class DeleteDocuments {
private static String accountName="https://jay.documents.azure.com:443/";
private static String accountKey="Czi66skfjZYLTaXuDhoxNb2JHL4DR98VxAxGXtLkWFnjCa5e7gUXQuPgemlXwyPWjjWJpwrseH1wPMfhkqA8cQ==";
private static String databaseName = "db";
private static String collectionName = "coll";
public static void main(String[] args) throws DocumentClientException {
DocumentClient client = new DocumentClient(
accountName,
accountKey
, new ConnectionPolicy(),
ConsistencyLevel.Session);
FeedOptions options = null;
String sql = "select * from c";
FeedResponse<Document> queryResults = client.queryDocuments("dbs/"+databaseName+"/colls/"+collectionName, sql, options);
System.out.println("before delete :");
for (Document d : queryResults.getQueryIterable()) {
System.out.println(String.format("\tRead %s", d));
}
RequestOptions requestOptions = new RequestOptions();
requestOptions.setOfferThroughput(400);
client.deleteDocument("/dbs/"+databaseName+"/colls/"+collectionName+"/docs/1",requestOptions);
queryResults = client.queryDocuments("dbs/"+databaseName+"/colls/"+collectionName, sql, options);
System.out.println("after delete :");
for (Document d : queryResults.getQueryIterable()) {
System.out.println(String.format("\tRead %s", d));
}
}
}
{
"id": "1",
"name": "jay"
}
{
"id": "2",
"name": "jay2"
}
我的partitionkey
是'name',所以这里有两个解析:'jay'和'jay1'。
因此,这里应该将PartitionKey
属性设置为'jay'或'jay2',而不是'name'。
此时,如果我运行下面的代码而不在RequestOptions中设置分区键,我将遇到与您相同的问题。
RequestOptions requestOptions = new RequestOptions();
requestOptions.setOfferThroughput(400);
client.deleteDocument("/dbs/"+databaseName+"/colls/"+collectionName+"/docs/1",requestOptions);
RequestOptions requestOptions = new RequestOptions();
requestOptions.setOfferThroughput(400);
PartitionKey partitionKey = new PartitionKey("jay");
requestOptions.setPartitionKey(partitionKey);
client.deleteDocument("/dbs/"+databaseName+"/colls/"+collectionName+"/docs/1",requestOptions);
更新答案2:
我猜你想操作没有设置分区键的文档。
请参考这个完美的博客,你会找到答案的!
RequestOptions requestOptions = new RequestOptions();
requestOptions.setOfferThroughput(400);
PartitionKey partitionKey = new PartitionKey(Undefined.Value());
requestOptions.setPartitionKey(partitionKey);
client.deleteDocument("/dbs/"+databaseName+"/colls/"+collectionName+"/docs/3",requestOptions);
问题内容: 我创建具有指定文档类型“ mytype”的索引“ myindex”。我可以删除索引,但是似乎“ mytype”仍然存在而没有与索引绑定。 如何摆脱“ mytype”? 问题答案: 如果您确实删除了索引,则该索引中的映射将不再存在。集群中是否还有其他具有相似类型名称的索引? 要回答问题:,请使用Delete Mapping API : 编辑 :从elasticsearch 2.0,将不再
我想删除我的elasticsearch上_type=varning-Request的所有文档。我安装了按查询删除插件(https://www.elastic.co/guide/en/elasticsearch/plugins/2.0/plugins-delete-by-query.html) 我确实删除了http://localhost:9200/logstash*/_查询 没关系 卷曲http:
通过指定文档的 /index/type/id 路径可以删除文档: $params = [ 'index' => 'my_index', 'type' => 'my_type', 'id' => 'my_id' ]; // Delete doc at /my_index/my_type/my_id $response = $client->delete($params);
我正在使用mongodb atlas,我已经建立了一个值。以下是用户收集的示例文档详细信息。 我试图显示除一个文档外的所有文档。 我已经显示了除测试之外的所有值_id:ObjectId(“5f7f193585d5f70c177f6d27”)在项目集合中。但我不能。 你能帮我解决这个问题吗。提前谢谢。
当我试图在MongoDB中删除集合中的文档时。它没有删除,因为集合已被封顶。我的问题是为什么?在这种情况下,是否有解决方案或其他功能可以删除文档?