Использование $ addFields для добавления дополнительного свойства в корневой документ Mongo - PullRequest
0 голосов
/ 07 ноября 2018

Я создаю вид Mongo для того, чтобы передать клиенту внешнего вида необходимые формы данных. Первоначально у меня есть документ, который выглядит так:

{ 
    "_id" : <value>, 
    "region" : "Midwest", 
    "dob" : ISODate("1989-07-21T05:00:00.000+0000"), 
    "paymentOption" : {
        "_id" : <value>, 
        "anotherProp" : <value>
        "coverage" : {
                "status" : "active", 
                "coverageEnd" : ISODate("2020-07-31T00:00:00.000+0000"), 
                "coverageStart" : ISODate("2018-08-01T00:00:00.000+0000"), 
        },
    }
}

... и я хочу взять «покрытие» из «paymentOption» и поместить его в корень документа со свойством под названием «покрытие», а затем удалить «paymentOption».

Для этого я попробовал это:

$addFields: {
   "coverage" : { "paymentOption.coverage" : {$exists: true} }
}

... но это выдает ошибку:

Неверная спецификация $ addFields: нельзя использовать точечное имя поля

Как нужно изменить эту операцию для создания этого документа?

{ 
    "_id" : <value>, 
    "region" : "Midwest", 
    "dob" : ISODate("1989-07-21T05:00:00.000+0000"), 
    "coverage" : {
                 "status" : "active", 
                 "coverageEnd" : ISODate("2020-07-31T00:00:00.000+0000"), 
                 "coverageStart" : ISODate("2018-08-01T00:00:00.000+0000"), 
    }
}

1 Ответ

0 голосов
/ 07 ноября 2018

Это сделает за вас:

db.collection.aggregate([
  {
    $addFields: {
      "coverage": "$paymentOption.coverage"
    }
  },
  {
    $project: {
      paymentOption: 0
    }
  }
])

Вы можете видеть это здесь работает

Вам не хватает оператора $, так как вы пытаетесь получить доступ к полям paymentOption.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...