Используя вышеупомянутые комментарии и решения, я сохраняю все параметры запроса, используя 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;
}
}
Будет ли deleteMany()
более эффективным? Недавно я обнаружил, что remove()
довольно медленный для 6-миллиметровых документов в коллекции до 100 м. Документация на ( https://docs.mongodb.com/manual/reference/method/db.collection.deleteMany )
db.collection.deleteMany(
<filter>,
{
writeConcern: <document>,
collation: <document>
}
)
Запустите этот запрос в cmd
db.users.remove ({"_id": ObjectId ("5a5f1c472ce1070e11fde4af")});
blockquote>Если вы используете node.js, напишите этот код
User.remove({ _id: req.body.id },, function(err){...});
Вы можете удалить его напрямую с помощью языка программирования MongoDB:
db.mycoll.remove({_id:'your_id_here'});
Вы можете использовать запрос для удаления всех соответствующих документов
var query = {name: 'John'};
db.collection.remove(query);
Будьте осторожны, хотя, если количество документов, соответствующих документу, велико, ваша база данных может быть менее отзывчивой. Часто рекомендуется удалять документы в небольших кусках.
Допустим, у вас есть 100k документов для удаления из коллекции. Лучше выполнить 100 запросов, которые удаляют 1k документов, чем 1 запрос, который удаляет все 100k документов.
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
$in
.
– Sergio Tulentsev
27 October 2015 в 12:50