WedX - журнал о программировании и компьютерных науках

Обновить встроенный массив объектов внутри массива в MongoDB

У меня есть документ типа:

{
"_id": "1000",
"answer_count": 0,
"answer_order": 0,
"fields": [{
    "name": "client_name",
    "id": "com28",
    "title": "Client",
    "required": true,
    "instruct": "",
    "dateType": "text"
}, {
    "name": "id_radio",
    "id": "com26",
    "title": "hobby",
    "required": false,
    "instruct": "",
    "value": [{
        "name": "Please select",
        "selected": true,
        "lid": "-1",
        "defaultTip": true
    }, {
        "name": "option1",
        "selected": false,
        "lid": "0"
    }, {
        "name": "option2",
        "selected": false,
        "lid": "1"
    }, {
        "name": "option3",
        "selected": false,
        "lid": "2"
    }]
}]
}

Я попробую:

db.survey_stat.update({
     "fields.id" : "com26", 
     "fields.value.name":"option1"
 },
 {
     "$inc":{
         "fields.0.value.$.selected_count":1
     }
 })

Но он не обновляет ни одно поле. Как я могу увеличить конкретное поле внутри массива?

14.08.2014


Ответы:


1

Запись массива с fields.id: "com26", которую вы хотите изменить, это fields.1, а не fields.0. Это означает, что вы пытаетесь изменить неправильную запись массива fields.

К сожалению, $-placeholder можно использовать только один раз в поле- дорожка. Когда у вас есть два вложенных массива, это не сработает. По этой проблеме есть открытый багтрекер. Единственный обходной путь — получить и заменить всю запись массива, в которой встречается вложенное поле.

14.08.2014
Новые материалы

Как создать диаграмму градиентной кисти с помощью D3.js
Резюме: Из этого туториала Вы узнаете, как добавить градиентную кисть к диаграмме с областями в D3.js. Мы добавим градиент к значениям SVG и применим градиент в качестве заливки к диаграмме с..

Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..


Для любых предложений по сайту: [email protected]