sql >> Database teknologi >  >> NoSQL >> MongoDB

Pymongo forHver formatering

For at sende javascript-kode ind fra Python skal du pakke den ind i en bson.Code objekt, da ellers Python selv (i stedet for PyMongo) vil forsøge at parse det. Dette giver dig:

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)
     }'''))

Men det faktum, at du bruger self derinde får det til at se ud som om du vil bruge Python-kode der, ikke javascript-kode. Fra dokumentationen , det ser ud til, at markørobjektet returneres fra find implementerer Python's Sequence-protokol - hvilket betyder, at du bare burde kunne bruge en almindelig Python-løkke i stedet for forEach (som dokumenterne synes at sige, at PyMongo alligevel ikke implementerer):

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


  1. mongoose populate returnerer null-array

  2. Hvordan laver man paginering ved hjælp af områdeforespørgsler i MongoDB?

  3. Hvordan videresender jeg Google Compute Engine Instance?

  4. Hvordan bruger man Elasticsearch med MongoDB?