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)
我有 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)