知識蒐集與儲存 (MongoDB):進階查詢

知識進階查詢 (Subject):

# -*- coding: utf-8 -*- import sys import codecs import uuid from pymongo import MongoClient class BDA1Q2(): def __init__(self): pass def Query(self, keyword): data = [] try: dbConn = MongoClient() dbCursor = dbConn['Emprogria'] qTerm = {'Title': {"$regex": keyword}} rowList = dbCursor.Subject.find(qTerm) for row in rowList: catTitle = '' categoryList = dbCursor.Category.find({'_id': row['idCategory']}) if categoryList is not None: catTitle = categoryList[0]['Title'] yes = True for term in row['Title'].split(): if term == 'general': yes = False break if yes: data.append((row['_id'], catTitle, row['Title'])) except Exception,e: print e return data def GenerateJSON(self, data): if len(data) == 0: return None json = [] for (_id, catTitle, title) in data: json.append('\t{"_id":"%s", "catTitle":"%s", "Title":"%s"}' % (_id, catTitle, title)) return "[\n%s\n]" % (',\n'.join(json)) if __name__ == '__main__': jsonFile = None keyword = 'Analytics' if len(sys.argv) > 1: keyword = sys.argv[1] if len(sys.argv) > 2: jsonFile = sys.argv[2] main = BDA1Q2() if jsonFile is None: print main.GenerateJSON(main.Query(keyword)) else: json = main.GenerateJSON(main.Query(keyword)) if json is not None: try: f = codecs.open(jsonFile, 'w', encoding='utf-8') f.write() f.close() except Exception, e: print e