Вот что я сделал и получил хорошие результаты:
db.getCollection('Album')
.update({ 'name': "a" }, { $pull: { 'file': { 'filename': "def.jpg" } }
}, { multi: true })
до базы данных выглядят так:
/* 1 */
{
"_id" : "1",
"name" : "a",
"detail" : "aaa",
"file" : [
{
"filename" : "abc.jpg",
"size" : "1.mb"
}
]
}
/* 2 */
{
"_id" : "2",
"name" : "a",
"detail" : "aaa",
"file" : [
{
"filename" : "def.jpg",
"size" : "1.mb"
}
]
}
/* 3 */
{
"_id" : "3",
"name" : "a",
"detail" : "aaa",
"file" : [
{
"filename" : "ghd.jpg",
"size" : "1.mb"
}
]
}
и после:
/* 1 */
{
"_id" : "1",
"name" : "a",
"detail" : "aaa",
"file" : [
{
"filename" : "abc.jpg",
"size" : "1.mb"
}
]
}
/* 2 */
{
"_id" : "2",
"name" : "a",
"detail" : "aaa",
"file" : []
}
/* 3 */
{
"_id" : "3",
"name" : "a",
"detail" : "aaa",
"file" : [
{
"filename" : "ghd.jpg",
"size" : "1.mb"
}
]
}
I просто следовал этому: https://docs.mongodb.com/manual/reference/operator/update/pull/
И я не знаю, почему ваш код не работает над База данных также.
Лучшее, которое я нашел, было:
для HTML/ASPX - Опций-> Разработчик HTML-> начальные страницы в исходном представлении
для XAML-> Опции-> Текстовый редактор-> XAML-> Misc-> Всегда открывают документы в полном представлении XAML
Сочетание клавиш перечислено при Представлении. ToggleDesigner.
Я просто хочу смочь отключить Режим конструктора; ярлык F7 довольно удобен для свопинга между источником и кодом позади при выполнении веб-разработки.
Необходимо смочь удалить присвоение клавиатуры для F7 на экране Keyboard Customization. Все присвоения горячей клавиши являются настраиваемым AFAIK.
Я сомневаюсь, что существует любой способ избавиться от кнопок на UI.
Это компилируется с использованием __ typeof __
GCC-расширения. Похоже, что GCC valarray
использует шаблоны выражений для задержки вычисления синуса. Но это сделает возвращаемый тип шаблона sin
не совсем valarray
, а скорее каким-то странным сложным типом.
#include <valarray>
template<typename T> struct id { typedef T type; };
int main() {
using std::valarray;
using std::sin;
id<__typeof__(sin(valarray<double>()))>::type (*fp)(const valarray<double> &) = sin;
}
Правка: См. Стандартную цитату AProgrammer, чтобы узнать, почему GCC это делает.
Изменить: Обходной путь, соответствующий стандарту
Выполнить это без __ typeof __
строго в соответствии со стандартами - это немного сложно. Вам нужно будет получить возвращаемый тип sin
. Для этого можно использовать условный оператор, как показал Эрик Ниблер . Он работает за счет того, что функция sin
фактически не вызывается, а только проверяется типом. Пытаясь преобразовать другую ветвь (ту, которая фактически вычисляется) условного оператора к тому же типу, мы можем сгенерировать фиктивный параметр, просто чтобы иметь возможность вывести тип указателя функции:
#include <valarray>
using std::valarray;
template<typename T> struct id {
typedef T type;
};
struct ded_ty {
template<typename T>
operator id<T>() { return id<T>(); }
};
template<typename E, typename T>
id<T(*)(valarray<E> const&)> genFTy(T t) {
return id<T(*)(valarray<E> const&)>();
}
template<typename T>
void work(T fp, id<T>) {
// T is the function pointer type, fp points
// to the math function.
}
int main() {
work(std::sin, 1 ? ded_ty() : genFTy<double>(std::sin(valarray<double>())));
}
Если вы хотите чтобы получить адрес сразу, вы можете написать work
, чтобы он снова вернул fp
.
template<typename T>
T addy(T fp, id<T>) { return fp; }
Теперь вы, наконец, можете написать макрос, чтобы инкапсулировать обман условного оператора, http://renaissauce.com/gotits/visual-studio-2008-tip-remove-the-design-split-source-button-bar/