У меня есть двойной вложенный массив в моей схеме MongoDB, и я пытаюсь добавить совершенно новый элемент массива во вложенный массив второго уровня, используя $ push.Я получаю сообщение об ошибке cannot use the part (...) to traverse the element
Документы имеют следующую структуру
{
"_id" : ObjectId("5d8e37eb46c064790a28a467"),
"org-name" : "Manchester University NHS Foundation Trust",
"domain" : "mft.nhs.uk",
"subdomains" : [ {
"name" : "careers.mft.nhs.uk",
"firstSeen" : "2017-10-06 11:32:00",
"history" : [
{
"a_rr" : "80.244.185.184",
"timestamp" : ISODate("2019-09-27T17:24:57.148Z"),
"asn" : 61323,
"asn_org" : "Ukfast.net Limited",
"city" : null,
"country" : "United Kingdom",
"shodan" : {
"ports" : [
{
"port" : 443,
"versions" : [
"TLSv1",
"-SSLv2",
"-SSLv3",
"TLSv1.1",
"TLSv1.2",
"-TLSv1.3"
],
"cpe" : "cpe:/a:apache:http_server:2.4.18",
"product" : "Apache httpd"
}
],
"timestamp" : ISODate("2019-09-27T17:24:58.538Z")
}
}
]
}
]
}
Я пытаюсь обновить данные, хранящиеся в массиве history
, и добавитьеще одна запись массива, представляющая последние собранные данные для subdomain.name
. В результате у меня будет несколько записей в массиве history
, каждая из которых помечает дату обновления данных.,Таким образом, у меня есть историческая запись об изменениях в любых хранящихся данных.
Я читал, что не могу использовать $ push для массива с двойным вложением, но все другие советы по использованию массив-фильтров все-такибыть связанным с обновлением записи в массиве, а не просто с добавлением совершенно нового документа - если я что-то упустил!
Я использую PyMongo и просто хотел бы создать новый словарь, содержащий все элементы данных, и просто добавить его в историю.
Спасибо!