Как удалить коллекцию из модели [дубликат]

Используя вышеупомянутые комментарии и решения, я сохраняю все параметры запроса, используя Map & lt; String, Object & gt; где Objects может быть строкой или Set & lt; String & gt ;. Решение приведено ниже. Рекомендуется использовать какой-либо валидатор URL для проверки подлинности URL-адреса, а затем вызвать метод convertQueryStringToMap.

private static final String DEFAULT_ENCODING_SCHEME = "UTF-8";

public static Map<String, Object> convertQueryStringToMap(String url) throws UnsupportedEncodingException, URISyntaxException {
    List<NameValuePair> params = URLEncodedUtils.parse(new URI(url), DEFAULT_ENCODING_SCHEME);
    Map<String, Object> queryStringMap = new HashMap<>();
    for(NameValuePair param : params){
        queryStringMap.put(param.getName(), handleMultiValuedQueryParam(queryStringMap, param.getName(), param.getValue()));
    }
    return queryStringMap;
}

private static Object handleMultiValuedQueryParam(Map responseMap, String key, String value) {
    if (!responseMap.containsKey(key)) {
        return value.contains(",") ? new HashSet<String>(Arrays.asList(value.split(","))) : value;
    } else {
        Set<String> queryValueSet = responseMap.get(key) instanceof Set ? (Set<String>) responseMap.get(key) : new HashSet<String>();
        if (value.contains(",")) {
            queryValueSet.addAll(Arrays.asList(value.split(",")));
        } else {
            queryValueSet.add(value);
        }
        return queryValueSet;
    }
}
12
задан mark 5 April 2012 в 20:42
поделиться

4 ответа

Будет ли deleteMany() более эффективным? Недавно я обнаружил, что remove() довольно медленный для 6-миллиметровых документов в коллекции до 100 м. Документация на ( https://docs.mongodb.com/manual/reference/method/db.collection.deleteMany )

db.collection.deleteMany(
   <filter>,
   {
      writeConcern: <document>,
      collation: <document>
   }
)
2
ответ дан mils 19 August 2018 в 05:04
поделиться

Запустите этот запрос в cmd

db.users.remove ({"_id": ObjectId ("5a5f1c472ce1070e11fde4af")});

Если вы используете node.js, напишите этот код

User.remove({ _id: req.body.id },, function(err){...});
1
ответ дан mmvsbg 19 August 2018 в 05:04
поделиться

Вы можете удалить его напрямую с помощью языка программирования MongoDB:

db.mycoll.remove({_id:'your_id_here'});
9
ответ дан Pablo Santa Cruz 19 August 2018 в 05:04
поделиться

Вы можете использовать запрос для удаления всех соответствующих документов

var query = {name: 'John'};
db.collection.remove(query);

Будьте осторожны, хотя, если количество документов, соответствующих документу, велико, ваша база данных может быть менее отзывчивой. Часто рекомендуется удалять документы в небольших кусках.

Допустим, у вас есть 100k документов для удаления из коллекции. Лучше выполнить 100 запросов, которые удаляют 1k документов, чем 1 запрос, который удаляет все 100k документов.

29
ответ дан Sergio Tulentsev 19 August 2018 в 05:04
поделиться
  • 1
    Я редактировал свой пост. – mark 5 April 2012 в 20:44
  • 2
    Let's say, you have 100k documents to delete from a collection. It is better to execute 100 queries that delete 1k documents each than 1 query that deletes all 100k documents. Как вы могли это достичь? – Ezequiel 27 October 2015 в 11:06
  • 3
    @Ezequiel: можно получить идентификаторы всех документов, которые нужно удалить, затем разделить их на партии 1000 и отправить несколько команд удаления с помощью оператора $in. – Sergio Tulentsev 27 October 2015 в 12:50
Другие вопросы по тегам:

Похожие вопросы: