InvalidDocument:无法编码对象:

时间:2012-08-08 18:20:01

标签: python mongodb pymongo

我正在尝试将一个文档objectID作为属性存储到另一个(链接),但是mongo一直给我这个错误。这条线的语法出了什么问题?

for u in self.request.db.lyrics.find():
    u['forSong'] = self.request.db.song.find({}, {'_id': 1})
    self.request.db.lyrics.save(u)

1 个答案:

答案 0 :(得分:3)

问题是查找方法的结果是游标,而不是对象列表

u['forSong'] = self.request.db.song.find({}, {'_id': 1})

是光标,而不是对象。 因此,您必须将返回的光标转换为列表以执行任务:

u['forSong'] = list(self.request.db.song.find({}, {'_id': 1}))

这会将列表中的{'_id':object-id} 保存到“forSong”字段中。 要实际接收对象ID列表,您必须进行进一步转换,例如:

from operator import itemgetter
...
u['forSong'] = map(itemgetter('_id'),
                   list(self.request.db.song.find({}, {'_id': 1})))