sql >> データベース >  >> NoSQL >> MongoDB

PymongoforEachフォーマット

    Pythonからjavascriptコードを渡すには、それをでラップする必要があります。 bson.Code そうでなければ、Python自体(PyMongoではなく)がそれを解析しようとするためです。これにより、次のことが可能になります:

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

    しかし、selfを使用しているという事実 そこには、JavaScriptコードではなく、Pythonコードを使用したいように見えます。 ドキュメント から 、findから返されたCursorオブジェクトのように見えます PythonのSequenceプロトコルを実装します。つまり、forEachの代わりに通常のPythonループを使用できるようにする必要があります。 (ドキュメントには、PyMongoはとにかく実装されていないと書かれているようです):

    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. MongoDBとKafkaを使用したNoSQLデータストリーミング

    2. MongoDB$演算子

    3. 他のNoSQLデータベースに関するDynamoDBの長所と短所は何ですか?

    4. mongoose node.js、$ltおよび$gtが機能しないクエリ