У меня есть MongoDB 2.2.2 и эта коллекция:Как обновить список списков в MongoDb?
> db.my_collection.find({_id: ObjectId('51b0f9b74cfe6e668c4fd8f4')}).pretty() { "_id" : ObjectId("51b0f9b74cfe6e668c4fd8f4"), "campaigns" : [ { "cs_strategy_name" : "HighestPosition", "name" : "DefaultCampaign", "campaign_id" : 0, "_syskey" : "default", "en_send_warn" : "Yes", "minus_keywords" : [ ], "login" : "test", "fio" : "test test" } ], "domain" : "defsite.ru", "login" : "test", "name" : "test", "password" : "", "site_id" : 2, "status" : "new", "surname" : "test"
Можете ли вы помочь мне найти подходящую команду для обновления: db.my_collection.campaigns.minus_keywords
?
Это массив внутри другого массива.
Большое спасибо!
Я спросил, и я отвечаю;) 'db.my_collection.update ({_ ID: ObjectId ('51b0f9b74cfe6e668c4fd8f4'), 'campaigns._syskey': 'default'}, {$ set: {'campaign.0.minus_keywords': ['aaa', 'bbb']}}) 'Есть ли лучший вариант? –
Только некоторые предложения, вместо указания элемента массива, который нужно изменить с помощью индекса массива («campaign.0.minus_keywords»), рассмотрите возможность использования оператора позиционирования $ ('campaign. $. Minus_keywords'). Для получения дополнительной информации о операторе позиционирования см. Http://docs.mongodb.org/manual/reference/operator/positional/. Кроме того, вы можете использовать оператор $ push с $ each вместо $ set, если вы хотите добавить список/массив. http://docs.mongodb.org/manual/reference/operator/push/ – Kay