Возможен ли монгоинженер с цифровыми клавишами c? - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть mon go -документы со структурой, подобной этой

{
   "_id":{
      "$oid":"5ea6c61c8a94f7c75e426669"
   },
   "title":"The title",
   "attributes":{
      "5e733c347e6caf0a4d643e7f":[
         "5e7b1e62bf924d3a5ed181de"
      ],
      "5e733c6c7e6caf0a4d6443c8":[
         "1"
      ],
      "5e73697aabee30028e573c4d":[
         "5e7cc610654336666131866f"
      ]
   },
   "id":"5e7fc2426a499664e15de014"
}

Можно ли сопоставить имена полей, например "5e73697aabee30038e573c0d", с mongoengine? Эти варианты не работают

class attributes(EmbeddedDocument):
    5e733c347e6caf0a4d643e7f = list()
class attributes(EmbeddedDocument):
    '5e733c347e6caf0a4d643e7f' = list()

Я нашел решение для меня. Я должен использовать db_field параметр:

class attributes(EmbeddedDocument):
    field_name = ListField(db_field='5e733c347e6caf0a4d643e7f')

Ответы [ 2 ]

2 голосов
/ 02 мая 2020

Можете ли вы уточнить структуру ваших мон go документов. Мне кажется, что вы используете mongoid в качестве значений. Есть отличный способ сделать это. Вы можете использовать ReferenceField. Пример:

class user(Document):
 #define all the values you want here

class attributes(Document):
   attrib=ReferenceField("user")

Этот тип структуры помогает, когда у вас есть длинные списки встроенных документов в коллекции, и облегчает поиск и выполнение другой работы в базе данных.

0 голосов
/ 29 апреля 2020

Я нашел решение для себя. Я должен использовать параметр db_field:

class attributes(EmbeddedDocument):
    field_name = ListField(db_field='5e733c347e6caf0a4d643e7f')
...