我正在尝试将一个文档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)
答案 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})))