Как вставить поле в уже существующие вложенные документы в mongodb? - PullRequest
0 голосов
/ 18 сентября 2018

У меня следующая структура документа.

{ 
    "_id" : ObjectId("585a985f67962d91c0f3a1f6"), 
    "Email" : "abc@gmail.com", 
    "PhoneNumber" : "9999999999", 
    "TwoFactorEnabled" : false, 
    "LockoutEndDateUtc" : null, 
    "LockoutEnabled" : true, 
    "AccessFailedCount" : NumberInt(0), 

    "DisplayName" : "Nilesh Guria", 
    "CreatedOn" : ISODate("2016-12-21T14:57:35.379+0000"), 
    "UpdatedOn" : ISODate("2018-09-17T21:32:16.027+0000"),  
    "Wallet" : {
        "Balance" : 1000,
        "UnbilledUsage": 100
    }
}

Я хочу добавить поле с именем "CustomerCredit" со значением по умолчанию 0 внутри поля "Кошелек" во всех таких документах. Как этого добиться?

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018
db.collection("collectionName")
  .updateMany({ "Wallet.CustomerCredit": { $exists: false }},
          { $set:{ "Wallet.CustomerCredit": 0 }});
0 голосов
/ 18 сентября 2018

Из оболочки Python.

db.collection.update_many({"$set": {"Wallet.CustomerCredit": 0}})

Вы можете использовать update_many, поскольку обновление теперь устарело.Из монголухи

db.collection.updateMany({},{$set: {"Wallet.CustomerCredit": 0}})
0 голосов
/ 18 сентября 2018

Попробуйте что-то вроде этого:

db.collection.aggregate([
    {
        $addFields{
             "Wallet.CustomerCredit": 0
        }
    }
])

См. документы

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