(Googleカスタム検索APIを使用して)Google検索の結果をmongoコレクションのドキュメントに挿入しようとしています。検索は'title'
、各ドキュメントのフィールドの値に対して実行されます。
昨日テストを実行しましたが、まだ1日あたり100クエリに制限されていたため、APIアカウントを誤って構成したようです。'google_search'
その結果、フィールドに正しいAPI結果が含まれる最大100のドキュメントがあります。他のすべてのドキュメントには'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)
しかし、forループといくつかのアトミック更新呼び出しの代わりに、単一のmongo呼び出しで同じことを行う方法があったことを知りたいです。正しいかどうかはわかりませんが、単一のメソッド呼び出しは、長いforループよりも高速になると思います。
どうもありがとうございます!