Как вставить нестроковый объект в качестве ключа в базе данных - PullRequest
0 голосов
/ 09 мая 2018

прямо сейчас я использую mongoDB и сталкивается с ключевой ошибкой на основании ограничения типа данных только для "String".

InvalidDocument: документы должны иметь только строковые ключи, ключ был («хороший», «полезный»)

Действие, которое я попробовал, следующее:

1) Создать базу данных с именем 'glot'

2) Создайте коллекцию с именем "usr_history"

3) Попробуйте вставить документ usr_history в коллекцию

со следующей командой в блокноте jupyter

import pymongo

from pymongo import MongoClient

client = MongoClient() #to run the mongod instance we need a client to run it

db = client['glot'] #we connect to 'test-database' with the pre-defined client instance

collection = db['usr_history']

edge_attr = {('good','beneficial'):"good is beneficial", ('beneficial','supportive'):"beneficial means something supportive"} #create this with glat_algo

usr_history = {"nodes": ['good', 'beneficial', 'supportive'], "edges": [('good', 'beneficial'), ('beneficial', 'supportive')], "rephrase": edge_attr}

collection.insert_one(usr_history)

и последняя команда возвращает ошибку, как указано выше.

По сути, я пытаюсь сохранить данные (vertex, edge, edge_attr) в любой БД, чтобы я мог отслеживать объем данных usr_history для анализа тех, кто использует python.

Я не ограничен mongoDB, поэтому вы можете дать мне руководство или решение не только с mongoDB, но и с другими альтернативами.

Большое спасибо.

1 Ответ

0 голосов
/ 09 мая 2018

Вы не можете использовать не строковое значение в качестве ключа; ключами могут быть только строки.

Будет лучше, если вы сохраните ('good','beneficial') в качестве значения отдельного атрибута, возможно, так:

edge_attr = [
  {"attr" : ('good','beneficial'), "val" : "good is beneficial"}, 
  {"attr" : ('beneficial','supportive'), "val" : "beneficial means something supportive"}
];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...