Как обратиться к подполю в конвейере mongodb, если имя поля включает «.»Python

Программы на Python
Ответить
Anonymous
 Как обратиться к подполю в конвейере mongodb, если имя поля включает «.»

Сообщение Anonymous »

Я определил следующий конвейер в Python. Я столкнулся с проблемой, когда метка включает ., например "1.2.3".
labels.{label} становится label.1.2.3

$labels.{k} становится $labels.1.2.3
pipeline = [
{
"$match": {
"$and": [
{"deleted": {"$ne": True}},
{
"$or": [
{f"labels.{label}": {"$exists": True}} for label in label_list
]
}
]
}
},
{
"$project": {
"_id": 0,
"command": 1,
"matching_labels": {
k: f"$labels.{k}" for k in label_list
}
}
}
]

Я спросил в чатгпт, но он не смог помочь с решением. Не могли бы вы мне помочь?
Я пытался использовать \., чтобы избежать ., а также [] вместо ., но ни то, ни другое не помогло.
Пример документов:
{
"_id": {
"$oid": "670cd0bae77a7a8a17abfb71"
},
"command": "show alarms ",
"original": "show alarms",
"labels": {
"critical": 2,
"rx": 1,
"failure": 1,
"6.5.3": 1,
"isis": 1,
"l2vpn": 1,
"chassis": 1,
"ncs-5501": 1,
"logs": 1,
"7.5.2": 1,
"hardware failure": 1,
"6.6.3": 1
},
"merged": true,
"finalised": true
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... e-includes
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»