我有2个表,我想在第二个表中插入对第一个表的引用。这是我要引用的表,名为player
self.db.insert('player',
{'char_id': char_info.char_id,
'name': char_info.name,
}
我尝试遵循官方文档并执行此操作:
self.db.insert('admin', {'char_id': {'$ref' : 'player', 'char_id': char_id}})
然而,当我尝试它时,我得到他的错误bson.errors.InvalidDocument: key '$ref' must not start with '$'
他们的查询可能看起来有点奇怪但是他们都是自定义的,他们只是像insert('table name', query)
如何正确执行此操作并展开player
?
答案 0 :(得分:0)
我遇到了同样的问题。。但是我没有找到正确的答案。但是,我可以使用DBRef使其工作。
from bson.dbref import DBRef
ref=DBRef(collection='player',id=char_id)
self.db.insert('admin', {'char_id':ref})
这应该有效。
答案 1 :(得分:0)
您的想法的问题在于,Id 没有被识别为 Id。这就是为什么您必须告诉 pyMongo,它必须将其作为外来 ID 处理。你可以用 ObjectId 做到这一点:
from bson.objectid import ObjectId
table2 = db.table2
table2_elem = {
'player': ObjectId('_idStringOfOPlayerElement')
}
table2.insert_one(table2_elem)