Драйвер PHP MongoDB - Удалите массив внутри документа [duplicate]

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
                switch (item.getItemId()) {
                case android.R.id.home:
                       finish();
                   break;
                }
                return true;
        }
207
задан Community 22 September 2017 в 17:57
поделиться

8 ответов

Попробуйте следующее: если ваша коллекция была «примером»

db.example.update({}, {$unset: {words:1}}, false, true);

См. это:

http://www.mongodb.org/display/DOCS/ Обновление # Обновление-% 24unset

UPDATE:

Вышеупомянутая ссылка больше не закрывает '$ unset'ing. Комментарий Ника Коттрелла ниже - путь. Обязательно добавьте {multi: true}, если вы хотите удалить это поле из всех документов в коллекции; в противном случае он удалит его только из первого найденного документа, который соответствует совпадению. См. Это для обновленной документации:

https://docs.mongodb.com/manual/reference/operator/update/unset/

Пример:

db.example.update({}, {$unset: {words:1}} , {multi: true});
352
ответ дан piRSquared 17 August 2018 в 08:48
поделиться

Проверка наличия «слов» и последующего удаления из документа

    db.users.update({"tags.words" :{$exists: true}},
                                           {$unset:{"tags.words":1}},false,true);

true указывает на обновление нескольких документов, если они совпадают.

0
ответ дан Abhi 17 August 2018 в 08:48
поделиться

вы также можете сделать это в агрегации, используя проект в 3.4

{$ project: {"tags.words": 0}}

-3
ответ дан joel Raja 17 August 2018 в 08:48
поделиться

Чтобы удалить или удалить поле в MongoDB

  • Для одиночной записи
    db.getCollection('userData').update({}, {$unset: {pi: 1}})
    
  • Для многоканальной записи
    db.getCollection('userData').update({}, {$unset: {pi: 1}}, {multi: true})
    
15
ответ дан shA.t 17 August 2018 в 08:48
поделиться

В начале я не понял, почему у вопроса есть щедрость (я думал, что у вопроса есть хороший ответ, и нечего добавить), но затем я заметил, что ответ, который был принят и одобрен 15 раз, был на самом деле не так!

Да, вы должны использовать $unset operator , но этот unset собирается удалить ключ слова, который не существует для документа для коллекции. Таким образом, в основном он ничего не сделает.

Итак, вам нужно сказать Mongo, чтобы посмотреть в тегах документа, а затем в словах с использованием точечной нотации . Итак, правильный запрос.

db.example.update(
  {},
  { $unset: {'tags.words':1}},
  false, true
)

Просто ради завершения, я буду ссылаться на другой способ сделать это , что намного хуже, но таким образом вы можете измените поле любым пользовательским кодом (даже на основе другого поля из этого документа).

116
ответ дан Suman Kundu 17 August 2018 в 08:48
поделиться

Чтобы ссылаться на пакет и удалять различные «клавиши», попробуйте

db['name1.name2.name3.Properties'].remove([
{
     "key" : "name_key1"
},
{
     "key" : "name_key2"
},
{
     "key" : "name_key3"
}
)]
-6
ответ дан taskinoor 17 August 2018 в 08:48
поделиться

По умолчанию метод update () обновляет один документ. Установите параметр Multi Parameter для обновления всех документов, соответствующих критериям запроса.

Изменено в версии 3.6. Синтаксис:

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>,
     collation: <document>,
     arrayFilters: [ <filterdocument1>, ... ]
   }
)

Пример:

db.getCollection('products').update({},{$unset: {translate:1, qordoba_translation_version:1}}, {multi: true})

В вашем примере:

db.getCollection('products').update({},{$unset: {'tags.words' :1}},  {multi: true})
0
ответ дан user2745436 17 August 2018 в 08:48
поделиться
db.example.updateMany({},{"$unset":{"tags.words":1}})

Мы также можем использовать это для обновления нескольких документов.

3
ответ дан Vipul 17 August 2018 в 08:48
поделиться
Другие вопросы по тегам:

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