Pymongo 插入和查询参考

Pymongo insert and query reference

我有 2 个 table,我想将对第一个 table 的引用插入第二个 table。这是我要引用的table,命名为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

我遇到了同样的问题..但是我没有找到正确的答案。但是,我能够使用 DBRef 使其工作..

from bson.dbref import DBRef
ref=DBRef(collection='player',id=char_id)
self.db.insert('admin', {'char_id':ref})

这应该有效..

您的想法的问题在于,Id 未被识别为 Id。这就是为什么你必须告诉 pyMongo,它必须将它作为一个外部 Id 来处理。你可以用 ObjectId:

    from bson.objectid import ObjectId        

    table2 = db.table2
    table2_elem = {
        'player':  ObjectId('_idStringOfOPlayerElement')
    }
    table2.insert_one(table2_elem)