我正在尝试在我的 mongo 集合的文档中插入谷歌搜索的结果(使用谷歌自定义搜索 API)。'title'
对每个文档的字段值执行搜索。
我昨天进行了测试,但似乎我错误地配置了我的 API 帐户,因为我仍然限制为每天 100 个查询。结果,我有大约 100 个文档,其中'google_search'
字段包含正确的 API 结果。所有其他文档都有一个'google_search'
包含以下内容的字段dict
:
{u'error': {u'code': 403,
u'errors': [{u'domain': u'usageLimits',
u'message': u'Daily Limit Exceeded',
u'reason': u'dailyLimitExceeded'}],
u'message': u'Daily Limit Exceeded'}}
因此,我想对每个不存在google_search
字段的文档或包含google_search.error
dict的文档执行 google_search
我可以这样做:
for item in coll.find({'$or': [{'google_search': None},
{'google_search.error.code': {'$ne': None}}]):
coll.update({'_id': item['_id']}, {'$set': {'google_search': g_search(item['title'])}})
但我想知道有什么方法可以用一个`coll.update(..., multi=True)
mongo 调用来做同样的事情,而不是一个 for 循环和几个原子更新调用。我觉得单个方法调用会比冗长的 for 循环更快,但我不确定我是否正确。
非常感谢!