Вы можете использовать dot-notation для доступа и установки полей глубоко внутри объектов, не влияя на другие свойства этих объектов.
Учитывая объект, указанный вами выше:
> db.test.insert({"id": "test_object", "some_key": {"param1": "val1", "param2": "val2", "param3": "val3"}})
WriteResult({ "nInserted" : 1 })
Мы можем обновить только some_key.param2
и some_key.param3
:
> db.test.findAndModify({
... query: {"id": "test_object"},
... update: {"$set": {"some_key.param2": "val2_new", "some_key.param3": "val3_new"}},
... new: true
... })
{
"_id" : ObjectId("56476e04e5f19d86ece5b81d"),
"id" : "test_object",
"some_key" : {
"param1" : "val1",
"param2" : "val2_new",
"param3" : "val3_new"
}
}
Вы можете вникать так глубоко, как вам нравится. Это также полезно для добавления новых свойств к объекту без влияния на существующие.
Похоже, вам больше не следует использовать UserPassCredentials
, оно устарело.
В предыдущей версии SDK ADAL еще не был доступен, и мы предоставили класс
blockquote>UserPassCredentials
. Это считается устаревшим и больше не должно использоваться.Для аутентификации с токенами вы можете попробовать приведенный ниже код.
from azure.common.credentials import ServicePrincipalCredentials # Tenant ID for your Azure Subscription TENANT_ID = 'ABCDEFGH-1234-1234-1234-ABCDEFGHIJKL' # Your Service Principal App ID CLIENT = 'a2ab11af-01aa-4759-8345-7803287dbd39' # Your Service Principal Password KEY = 'password' credentials = ServicePrincipalCredentials( client_id = CLIENT, secret = KEY, tenant = TENANT_ID )
Если вам нужно больше контроля, рекомендуется использовать ADAL и оболочку SDK ADAL.
import adal from msrestazure.azure_active_directory import AdalAuthentication from msrestazure.azure_cloud import AZURE_PUBLIC_CLOUD # Tenant ID for your Azure Subscription TENANT_ID = 'ABCDEFGH-1234-1234-1234-ABCDEFGHIJKL' # Your Service Principal App ID CLIENT = 'a2ab11af-01aa-4759-8345-7803287dbd39' # Your Service Principal Password KEY = 'password' LOGIN_ENDPOINT = AZURE_PUBLIC_CLOUD.endpoints.active_directory RESOURCE = AZURE_PUBLIC_CLOUD.endpoints.active_directory_resource_id context = adal.AuthenticationContext(LOGIN_ENDPOINT + '/' + TENANT_ID) credentials = AdalAuthentication( context.acquire_token_with_client_credentials, RESOURCE, CLIENT, KEY )
Подробнее см. По этой ссылке: Аутентификация с помощью библиотек управления Azure для Python .
Если у вас нет приложения AD, перейдите по этой ссылке , чтобы создать его. Чтобы получить идентификатор клиента (идентификатор клиента совпадает с идентификатором приложения) и ключ, перейдите по этой ссылке .