MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как мога да използвам Python за трансформиране на bsondump на MongoDB в JSON?

Това, което имате, е дъмп в Mongo Extended JSON в режим TenGen (вижте тук). Някои възможни начини:

  1. Ако можете да изхвърлите отново, използвайте режим на строг изход чрез MongoDB REST API. Това трябва да ви даде истински JSON вместо това, което имате сега.

  2. Използвайте bson от http://pypi.python.org/pypi/bson/, за да прочетете BSON, който вече имате, в структурите от данни на Python и след това да извършите каквато и да е обработка, която ви е необходима (евентуално извеждане на JSON).

  3. Използвайте обвързванията на MongoDB Python, за да се свържете с базата данни, за да получите данните в Python, и след това направете каквато обработка ви е необходима. (Ако е необходимо, можете да настроите локален екземпляр на MongoDB и да импортирате изхвърлените си файлове в него.)

  4. Преобразувайте Mongo Extended JSON от режим TenGen в строг режим. Можете да разработите отделен филтър, за да го направите (четете от stdin, заменете структурите TenGen със Strict структури и изведете резултата на stdout) или можете да го направите, докато обработвате входа.

Ето пример за използване на Python и регулярни изрази:

import json, re
from bson import json_util

with open("data.tengenjson", "rb") as f:
    # read the entire input; in a real application,
    # you would want to read a chunk at a time
    bsondata = f.read()

    # convert the TenGen JSON to Strict JSON
    # here, I just convert the ObjectId and Date structures,
    # but it's easy to extend to cover all structures listed at
    # http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON
    jsondata = re.sub(r'ObjectId\s*\(\s*\"(\S+)\"\s*\)',
                      r'{"$oid": "\1"}',
                      bsondata)
    jsondata = re.sub(r'Date\s*\(\s*(\S+)\s*\)',
                      r'{"$date": \1}',
                      jsondata)

    # now we can parse this as JSON, and use MongoDB's object_hook
    # function to get rich Python data structures inside a dictionary
    data = json.loads(jsondata, object_hook=json_util.object_hook)

    # just print the output for demonstration, along with the type
    print(data)
    print(type(data))

    # serialise to JSON and print
    print(json_util.dumps(data))

В зависимост от целта ви, една от тях трябва да бъде разумна отправна точка.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Извеждане на основен HTML изглед?

  2. Неуспешно свързване към 127.0.0.1:27017, причина:errno:111 Връзката е отказана

  3. Как да групирате датите по тримесечие?

  4. Препратка към схемата на Mongoose и недефиниран тип „ObjectID“

  5. Push операции в MongoDB