mongodb/python/pymongo 中的新手。我的 mongodb 客户端代码工作正常。这里是 :
db.meteo.find().forEach( function(myDoc) {
db.test.update({"contract_name" : myDoc.current_observation.observation_location.city},
{ $set: { "temp_c_meteo" : myDoc.current_observation.temp_c ,
}
},
{upsert:false,
multi:true})
})
当contract_name(来自测试集合)等于current_observation.observation_location.city(来自meteo集合)时,这会将temp_c_meteo列添加到我的测试集合中的所有文档中。这就是我想要的!
但是,我希望这在 Python 中也能正常工作。Python 2.7-pymongo 2.6.3 已安装。还有 Python 2.4.6(64 位)和 3.4.0(64 位)。
这是 Python 脚本的一部分:
[...]
saveInDB:
#BE connected to MongoDB client
MDBClient = MongoClient()
db = MDBClient ['test']
collection = db['infosdb']
[...]
meteos = collectionMeteo.find()
for met in meteos:
logging.info('DEBUG - Update with meteo ' + met['current_observation']['observation_location']['city'])
result = collection.update_many( {"contract_name" : met['current_observation']['observation_location']['city']},
{
"$set": {"temp_c_meteo" : met['current_observation']['temp_c']}
})
我得到了错误:==> [06/21/2016 10:51:03 AM] [警告]:'Collection' 对象不可调用。如果您打算在 'Collection' 对象上调用 'update_many' 方法,它会失败,因为不存在这样的方法。
我读到这个问题可能与某些 pymongo 版本有关(“不推荐使用保存和更新方法”,这就是我尝试使用 update_many 的原因)但不确定如何使这项工作?谢谢