2012-08-08 51 views

回答

3

的问题是,的结果发现方法是光标,而不是对象的列表

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

是光标,而不是一个对象。 所以你必须将返回光标列出做你的任务:

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

,将节省像{“_id”:对象ID}类型的字典列表到“forSong”字段。 要真正得到对象ID的列表,你必须做出进一步的转换,e.g:

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

如果我要存储_id对象本身,而不是一个列表? – zakdances 2012-08-08 18:41:51

+0

不,这是一个带有1个'_id'的字典,其值是mongo的ObjectId。您必须从这些字典中获取值以接收ObjectId对象的普通列表,因为我在更新后的回答中添加了上面的 – 2012-08-08 18:45:10

+0

我已将自己的行更改为self.request.db.lyrics.find()中的您: ['forSong'] = map(itemgetter('_ id'),list(self.request.db.song.find({},{'_id':1})) self.request.db.lyrics.save ü),但我仍然得到一个语法错误 – zakdances 2012-08-08 18:52:31