MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Pymongo dla każdego formatowania

Aby przekazać kod JavaScript z Pythona, musisz umieścić go w bson.Code obiekt, ponieważ w przeciwnym razie sam Python (a nie PyMongo) spróbuje go przeanalizować. To daje:

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

Ale fakt, że używasz self tam wygląda na to, że chcesz użyć kodu Pythona, a nie kodu javascript. Z dokumentacji , wygląda na to, że obiekt Cursor zwrócony z find implementuje protokół Sequence Pythona - co oznacza, że ​​powinieneś być w stanie użyć zwykłej pętli Pythona zamiast forEach (którego dokumentacja wydaje się mówić, że PyMongo i tak nie implementuje):

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak wysłać zapytanie do mongodb za pomocą DBRef

  2. Porównanie mangusty _id i strings

  3. Jaki jest pożytek z Jade lub Handlebars podczas pisania aplikacji AngularJs

  4. Konwersja Dictionary<string, object>-to-BsonDocument z pominięciem pola _t

  5. Replika MongoDB ustawiona na platformie Azure, gdzie skierować zaporę?