MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मैं MongoDB के bsondump को JSON में बदलने के लिए पायथन का उपयोग कैसे कर सकता हूं?

आपके पास TenGen मोड में Mongo Extended JSON में डंप है (देखें यहां)। जाने के कुछ संभावित तरीके:

  1. यदि आप फिर से डंप कर सकते हैं, तो MongoDB REST API के माध्यम से स्ट्रिक्ट आउटपुट मोड का उपयोग करें। आपके पास अभी जो है उसके बजाय आपको वास्तविक JSON देना चाहिए।

  2. bson का उपयोग करें बीएसओएन को पढ़ने के लिए http://pypi.python.org/pypi/bson/ से आप पहले से ही पायथन डेटा संरचनाओं में हैं और फिर उन पर आपको जो भी प्रसंस्करण की आवश्यकता है (संभवतः JSON आउटपुट) करें।

  3. डेटा को पायथन में प्राप्त करने के लिए डेटाबेस से कनेक्ट करने के लिए MongoDB पायथन बाइंडिंग का उपयोग करें, और फिर आपको जो भी प्रसंस्करण की आवश्यकता है उसे करें। (यदि आवश्यक हो, तो आप एक स्थानीय MongoDB उदाहरण सेट कर सकते हैं और उसमें अपनी डंप की गई फ़ाइलें आयात कर सकते हैं।)

  4. Mongo Extended JSON को TenGen मोड से स्ट्रिक्ट मोड में बदलें। आप इसे करने के लिए एक अलग फ़िल्टर विकसित कर सकते हैं (stdin से पढ़ें, TenGen संरचनाओं को सख्त संरचनाओं से बदलें, और परिणाम को stdout पर आउटपुट करें) या आप इनपुट को संसाधित करते समय ऐसा कर सकते हैं।

यहां पायथन और रेगुलर एक्सप्रेशन का उपयोग करते हुए एक उदाहरण दिया गया है:

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. MongoDB - त्रुटि:getMore कमांड विफल:कर्सर नहीं मिला

  2. सभी मोंगो संग्रहों के माध्यम से लूप करें और क्वेरी निष्पादित करें

  3. MongoDB $min एकत्रीकरण पाइपलाइन ऑपरेटर

  4. किसी सरणी में किसी आइटम को अपडेट करें जो किसी सरणी में है

  5. MongoDB में एक तिथि से माह प्राप्त करने के 5 तरीके