MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Pymongo forEach formatação


Para passar o código javascript do Python, você precisa envolvê-lo em um bson.Code objeto, pois, caso contrário, o próprio Python (em vez do PyMongo) tentará analisá-lo. Isso lhe dá:
import bson
self.request.db.myCollection.find().forEach(bson.Code( '''
    function(u) { 
       u.forSong = self.request.db.song.find_one({}, {'_id': 1})
       self.request.db.save(u)
     }'''))

Mas o fato de você estar usando self lá faz parecer que você quer usar o código Python lá, não o código javascript. Da documentação , parece que o objeto Cursor retornado de find implementa o protocolo Sequence do Python - o que significa que você deve ser capaz de usar um loop regular do Python em vez de forEach (que os documentos parecem dizer que o PyMongo não implementa de qualquer maneira):
for u in self.request.db.myCollection.find():
   u.forSong = self.request.db.song.find_one({}, {'_id': 1})
   self.request.db.myCollection.save(u)