как обновить элемент вложенного массива с использованием нескольких условий? [Дубликат]

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

58
задан Jaap 12 September 2014 в 14:30
поделиться

1 ответ

Вы можете присвоить свой update объект запроса, который предотвращает обновление, если name уже присутствует в profile_set. В оболочке:

db.coll.update(
    {_id: id, 'profile_set.name': {$ne: 'nick'}}, 
    {$push: {profile_set: {'name': 'nick', 'options': 2}}})

Таким образом, это будет выполнять только $push для документа с сопоставлением _id и где нет элемента profile_set, где name есть 'nick'.

78
ответ дан JohnnyHK 18 August 2018 в 07:18
поделиться
  • 1
    как я могу принять это в upsert, я получил дублированную ошибку ключа ... – Zoozy 27 June 2013 в 05:28
  • 2
    мне нужно создать индекс profile_set.name? – MK Yung 23 December 2013 в 12:13
  • 3
    – Anders Östman 27 October 2014 в 15:23
  • 4
    Повсюду я пошел решать проблемы мангуста или монго, @ ДжонниХК всегда спас меня. – Jinyoung Kim 30 March 2016 в 17:04
  • 5
    @JohnnyHK, что, если мне нужно переписать значение, если оно уже существует? – Alex Zhukovskiy 25 December 2017 в 14:43
Другие вопросы по тегам:

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