2015-10-12 2 views
0

У меня есть коллекция с более чем 1000 документами json. Я хочу удалить все документы в этой коллекции.Усечение Эквивалентная команда для Azure DocumentDB

Есть ли способ сделать это с портала с помощью запроса?

PS: Я знаю, что могу удалить коллекцию и воссоздать ее или использовать приложение C# для этого.

ответ

1

Нет, эквивалент выражения SQL DELETE в DocumentDB не существует, поэтому нет способа сделать это с запросом. Вот хранимая процедура (CoffeeScript), которая делает это для меня, когда я хочу удалить на основе запроса. более

deleteSomeDocuments = (memo) -> 

    collection = getContext().getCollection() 

    unless memo? 
    memo = {} 
    if memo.returnDeleted 
    unless memo.deleted? 
     memo.deleted = [] 
    else 
    memo.returnDeleted = false 

    stillQueuingOperations = true 

    query =() -> 
    if stillQueuingOperations 
     responseOptions = 
     pageSize: memo.remaining 
     setBody() 
     if memo.filterQuery? 
     memo.stillQueueing = collection.queryDocuments(collection.getSelfLink(), memo.filterQuery, responseOptions, onReadDocuments) 
     else 
     memo.stillQueueing = collection.readDocuments(collection.getSelfLink(), responseOptions, onReadDocuments) 

    onReadDocuments = (err, resources, options) -> 
    if err 
     throw err 

    if resources.length isnt memo.remaining 
     throw new Error("Expected memo.remaining (#{memo.remaining}) and the number of rows returned (#{resources.length}) to match. They don't.") 

    memo.stillQueueing = true 
    while memo.remaining > 0 and memo.stillQueueing 
     oldDocument = resources[memo.remaining - 1] 
     documentLink = oldDocument._self 
     etag = oldDocument._etag 
     options = {etag} # Sending the etag per best practice, but not handling it if there is conflict. 
     getContext().getResponse().setBody(memo) 
     memo.stillQueueing = collection.deleteDocument(documentLink, options) 
     if memo.stillQueueing 
     if memo.returnDeleted 
      memo.deleted.push(oldDocument) 
     memo.remaining-- 

    setBody =() -> 
    getContext().getResponse().setBody(memo) 

    query() 
    return memo 

exports.deleteSomeDocuments = deleteSomeDocuments 
+0

Одна реализация sproc здесь: https://github.com/aliuy/azure-node-samples/blob/master/documentdb-server-side-js/stored-procedures/bulkDelete.js –

+0

Любая идея если он будет добавлен? – Sandesh

+0

Существует запрос функции для INSERT, UPDATE и DELETE. Он помечен как «Обзор». http://feedback.azure.com/forums/263030-documentdb/suggestions/6346033-set-based-operations-insert-update-delete, однако, я лично считаю, что с введением синтаксиса собственных запросов JavaScript, что они отходя от того, чтобы быть более похожим на SQL. Все в порядке со мной, пока они обновляют родной язык JavaScript, чтобы поддерживать отправку строк для определения функций фильтра. –

Смежные вопросы