sql >> Databáze >  >> NoSQL >> MongoDB

Pymongo pro každé formátování

Chcete-li předat kód javascriptu z Pythonu, musíte jej zabalit do bson.Code objekt, protože jinak se jej sám Python (spíše než PyMongo) pokusí analyzovat. To vám dává:

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 skutečnost, že používáte self tam to vypadá, že tam chcete použít kód Pythonu, ne kód javascript. Z dokumentace , vypadá to, že objekt Cursor se vrátil z find implementuje protokol Python's Sequence – což znamená, že byste měli být schopni používat běžnou smyčku Pythonu namísto forEach (což se zdá, že dokumenty říkají, že PyMongo stejně neimplementuje):

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. Přepněte kolekci v mongoengine pro vyhledávací dotaz

  2. Operátor agregačního potrubí MongoDB $min

  3. Persist and flush - Doctrine a MongoDB

  4. mongodb c# vyberte konkrétní pole tečkovou notaci