zak*_*ces 3 python mongodb pymongo
如何格式化forEach函数,使其可以停留在多行而不会导致语法错误?就像是
self.request.db.myCollection.find().forEach(
function(u) {
u.forSong = self.request.db.song.find_one({}, {'_id': 1})
self.request.db.save(u)
})
Run Code Online (Sandbox Code Playgroud)
lvc*_*lvc 10
要从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)
}'''))
Run Code Online (Sandbox Code Playgroud)
但是你self在那里使用的事实使你看起来想要在那里使用Python代码,而不是javascript代码.从文档中看,它看起来像从find实现Python的Sequence协议返回的Cursor对象- 意味着你应该只能使用常规的Python循环而不是forEach(文档似乎说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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7220 次 |
| 最近记录: |