2012-08-08 14 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