def insert_qs(): Database.db.drop_collection(Database.qs) Database.db.drop_collection(Database.db.qs_place) # drop index for fast insertion Database.qs.drop_indexes() Database.qs.ensure_index("_id") Database.db.qs_place.drop_indexes() Database.db.qs_place.ensure_index("_id") studies = Database.studies.find() print studies.count(), 'studies found in the db' for i, study in enumerate(studies): study_id = str(study['_id']) places_ids = study['places_id'] # NOTE: places_ids are objectids, we need strings places_ids = [str(place) for place in places_ids] # add a score for each location in the given study for place_id in places_ids: Database._add_qs_place(place_id, study_id) #find all the locations used by this study and update/create qs entries locations = Database.locations.find({'place_id' : {'$in' : places_ids}}) # update/create a qs field for every study, location pair print 'processing study', i+1, study['study_name'], 'with', locations.count(), 'locations from', len(places_ids), 'places' ninserts = 0 for loc in locations: place_id = str(loc['place_id']) location_id = str(loc['_id']) result = Database._add_qs(location_id, place_id, study_id) ninserts += 1 print 'finished processing study', study['study_name'], 'ninserts:', ninserts
sys.path.append(os.path.dirname(CURRENT_DIR)) from db import Database question = sys.argv[1] study = Database.studies.find_one() del study['_id'] study['study_name'] = question study['study_question'] = question study_id = str(Database.studies.insert(study)) places_ids = study['places_id'] # NOTE: places_ids are objectids, we need strings places_ids = [str(place) for place in places_ids] # add a score for each location in the given study for place_id in places_ids: Database._add_qs_place(place_id, study_id) #find all the locations used by this study and update/create qs entries locations = Database.locations.find({'place_id' : {'$in' : places_ids}}) # update/create a qs field for every study, location pair print 'adding study', study['study_name'], 'with', locations.count(), 'locations from', len(places_ids), 'places' ninserts = 0 for loc in locations: place_id = str(loc['place_id']) location_id = str(loc['_id']) result = Database._add_qs(location_id, place_id, study_id) ninserts += 1 print 'finished processing study', study['study_name'], 'ninserts:', ninserts
sys.path.append(os.path.dirname(CURRENT_DIR)) from db import Database question = sys.argv[1] study = Database.studies.find_one() del study['_id'] study['study_name'] = question study['study_question'] = question study_id = str(Database.studies.insert(study)) places_ids = study['places_id'] # NOTE: places_ids are objectids, we need strings places_ids = [str(place) for place in places_ids] # add a score for each location in the given study for place_id in places_ids: Database._add_qs_place(place_id, study_id) #find all the locations used by this study and update/create qs entries locations = Database.locations.find({'place_id': {'$in': places_ids}}) # update/create a qs field for every study, location pair print 'adding study', study['study_name'], 'with', locations.count( ), 'locations from', len(places_ids), 'places' ninserts = 0 for loc in locations: place_id = str(loc['place_id']) location_id = str(loc['_id']) result = Database._add_qs(location_id, place_id, study_id) ninserts += 1 print 'finished processing study', study['study_name'], 'ninserts:', ninserts