Mongoose Потяните объекты по их значениям свойств из массива (возможно, пустым) [duplicate]

Я нашел следующие методы полезными:

  1. Убедитесь, что ваш механизм базы данных настроен на прием удаленных подключений: Пуск> Все программы> SQL Server 2005> Средства настройки> Конфигурация зоны SQL Server Нажмите в разделе Конфигурация поверхности для служб и подключений Выберите экземпляр, имеющий проблемы> Механизм базы данных> Удаленные подключения Включение локальных и удаленных подключений Перезапуск экземпляра
  2. Возможно, вам нужно создать исключение на брандмауэре для SQL Server экземпляр и порт, которые вы используете: Пуск> Выполнить> Брандмауэр.cpl Перейдите на вкладку исключений Добавить sqlservr.exe (обычно находится в C:\Program Files (x86)\Microsoft SQL Server\MSSQL.x\MSSQL\Bin, проверьте установки для фактического пути к папке) и порт (по умолчанию 1433). Проверьте Строка соединения также из FIX: ОШИБКА: Не удалось открыть соединение с SQL Server :
  3. Проверьте, правильно ли работают службы SQL Server: Перейти к Все программы> Microsoft SQL Server 2008> Инструменты настройки> Конфигурация SQL Server ation Manager> Службы SQL Server Проверьте, работает ли статус службы SQL Server. Кроме того, убедитесь, что ваш удаленный сервер находится в одной сети. Запустите sqlcmd -L, чтобы узнать, включен ли ваш сервер в список вашей сети.
  4. Включить TCP / IP в конфигурации SQL Server Когда два или более SQL-сервера подключены по сети, они выполняют все коммуникации с использованием TCP / IP. Стандартный порт установки SQL Server - 1433. Этот порт можно изменить с помощью диспетчера конфигурации SQL Server. Для подключения SQL Server необходимо включить TCP / IP. Перейти к Все программы >> Microsoft SQL Server 2008 >> Инструменты настройки >> Диспетчер конфигурации SQL Server >> Выберите TCP / IP Щелкните правой кнопкой мыши по TCP / IP >> Нажмите «Включить». Необходимо перезапустить службы SQL Server, чтобы все изменения вступили в силу , Щелкните правой кнопкой мыши и перейдите к свойствам меню, чтобы выбрать местоположение, где порт по умолчанию для SQL Server можно изменить.

91
задан Justin John 16 February 2017 в 05:49
поделиться

3 ответа

Попробуйте выполнить следующий запрос:

collection.update(
  { _id: id },
  { $pull: { 'contact.phone': { number: '+1786543589455' } } }
);

Он найдет документ с данным _id и удалит телефон +1786543589455 из его массива contact.phone.

Вы может использовать $unset для отмены значения в массиве (установите его на null), но не полностью удалить его.

162
ответ дан Leonid Beschastny 19 August 2018 в 08:12
поделиться
  • 1
    Спасибо. Он работает хорошо. Я пробовал с { $pull: { 'contact.phone.$': { 'contact.phone.$.number': '+1786543589455' } } } и { $pull: { 'contact.phone': { 'contact.phone.$.number': '+1786543589455' } } } без успеха. Не понимает работу позиционных операторов здесь? – Justin John 6 June 2013 в 11:46
  • 2
    Есть ли обратная связь с этим? – Oliver Dixon 1 September 2015 в 17:34
  • 3
    @iLoveUnicorns вы могли бы добавить обратный вызов в качестве третьего аргумента, или вы могли бы использовать возвращенные обещания. – Leonid Beschastny 1 September 2015 в 17:46
  • 4
    @LeonidBeschastny Я попробовал это. В моем случае у меня есть несколько документов с одним ключом. Я хочу, чтобы $ тянуть все эти документы, но текущий запрос изменяет только один документ, а затем останавливается. Какие изменения мне нужны? – Shubham A. 5 September 2017 в 05:13
  • 5
    @ShubhamA. по умолчанию .update() обновляет один документ. Для обновления нескольких документов используйте параметр { multi: true }. Подробнее см. В db.collection.update документах . – Leonid Beschastny 6 September 2017 в 16:50

Этот ниже код удалит полный элемент объекта из массива, где номер телефона «+1786543589455»

db.collection.update(
  { _id: id },
  { $pull: { 'contact': { number: '+1786543589455' } } }
);
9
ответ дан chirag jain 19 August 2018 в 08:12
поделиться
0
ответ дан Aimen Batool 30 October 2018 в 20:22
поделиться
Другие вопросы по тегам:

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