выбрать конкретное поле из коллекции монго не работает - PullRequest
1 голос
/ 16 мая 2019

У меня есть коллекция с именем tabelas with data, например:

{ "_id" : ObjectId("5cdcd4669dc6d6274f2234dc"), 
  "id" :  "recdj5bcTznLBGtbY", 
  "fields" : { "id_tabela" : "tab0005" }, 
  "createdTime" : "2018-08-13T19:15:26.000Z" }

Я пытаюсь создать массив только со значениями, заданными "id_tabela", в этом случае мой результат будет ["tab0005"].

Я пытался, используя pymongo, сначала получить значения "fields", а затем получить значения id_tabela.Но я даже не получаю значения fields.

tabelas = db.get_collection("tabelas")
db.drop_collection("tabelas")
result_tabelas = tabelas.insert_many(lista_tabs)

tabelas = db.get_collection("tabelas") 
tab_array = list(tabelas.find())

vec_fields = tab_array['fields']

Последняя строка приводит к ошибке вида:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not str

1 Ответ

1 голос
/ 16 мая 2019

Вы также можете использовать aggregation

db.collection.aggregate([
  { "$group": {
    "_id": False,
    "array": {
      "$addToSet": "$fields.id_tabela"
    }
  }}
])
...