From charlesreid1

PyMonGo On Get On With It Already

On this page we show how to set up a connection to the MongoDB.

Start mongodb

Fire up mongodb on homebrew:

mongod -f /usr/local/etc/mongodb.conf

On Linux:

mongod -f /etc/mongodb.conf

Start python

Fire up Python:

>>> from pymongo import MongoClient
>>> client = MongoClient('localhost', 27017)

Now you're connected to the local MongoDB daemon, and you can interact with the database.

Create database and collections

If you have a MongoDB client, you must start by getting a database (create one if it does not exist), in this case one called test_database:

>>> db = client.test_database

Now that you have a database, you can get a collection (create one if it does not exist):

>>> collection = db.test_collection

Inserting data into collections

Finally, once you have a collection you can start to add documents to it:

>>> doc = { 'bssid' : 'aa:bb:cc:dd:ee:ff:00:11', 'channel' : 5, 'ssid' : 'Nacho Wifi', 'strength' : -20, 'encryption' : 'WPA' }
>>> result = collection.insert_one(doc)

(SQL analogy: once you have a database, you can start to add tables. Once you have tables, you can start to add records/rows to the tables.)

To monitor the whole process, add the following line to your config file, so that mongodb will print out more info about what's going on:

systemLog:
  path: /usr/local/var/log/mongodb/mongo.log
  verbosity: 2

Now, as you perform operations on mongodb in Python, you can run tail -f /usr/local/var/log/mongodb/mongo.log in another window, and monitor to ensure that everything is working as expected.

Script: insert test data

from pymongo import MongoClient

client = MongoClient('localhost', 27017)
db = client.test_database
collection = db.test_collection

docs = [{ 'bssid' : 'A', 'channel' : 1, 'ssid' : 'asdf', 'strength' : -20, 'encryption' : 'WPA' },
        { 'bssid' : 'B', 'channel' : 2, 'ssid' : 'qwer', 'strength' : -20, 'encryption' : 'WPA' },
        { 'bssid' : 'C', 'channel' : 1, 'ssid' : 'woei', 'strength' : -20, 'encryption' : 'WPA' },
        { 'bssid' : 'D', 'channel' : 1, 'ssid' : 'wori', 'strength' : -20, 'encryption' : 'WPA' },
        { 'bssid' : 'E', 'channel' : 2, 'ssid' : 'oprr', 'strength' : -20, 'encryption' : 'WPA' },
        { 'bssid' : 'F', 'channel' : 2, 'ssid' : 'fghf', 'strength' : -20, 'encryption' : 'WPA' },
        { 'bssid' : 'G', 'channel' : 3, 'ssid' : 'yruy', 'strength' : -20, 'encryption' : 'WPA' },
        { 'bssid' : 'H', 'channel' : 2, 'ssid' : 'aaaa', 'strength' : -20, 'encryption' : 'WPA' },
        { 'bssid' : 'I', 'channel' : 4, 'ssid' : 'qaqw', 'strength' : -30, 'encryption' : 'WPA' },
        { 'bssid' : 'J', 'channel' : 4, 'ssid' : 'sxv3', 'strength' : -30, 'encryption' : 'WPA' },
        { 'bssid' : 'K', 'channel' : 1, 'ssid' : '8fkk', 'strength' : -30, 'encryption' : 'WPA' },
        { 'bssid' : 'L', 'channel' : 2, 'ssid' : 'plnb', 'strength' : -30, 'encryption' : 'WPA' },
        { 'bssid' : 'M', 'channel' : 4, 'ssid' : 'llzb', 'strength' : -30, 'encryption' : 'WPA' },
        { 'bssid' : 'N', 'channel' : 3, 'ssid' : 'u2tt', 'strength' : -30, 'encryption' : 'WPA' }]

result = collection.insert_many(docs)
print result.inserted_ids

Script: print test data

from pymongo import MongoClient

client = MongoClient('localhost', 27017)
db = client.test_database
collection = db.test_collection

for doc in collection.find({'encryption':'WPA'}):
    print "Network %s has WPA encryption."%( doc['ssid'] )

This should run very fast:

$ python print_test_data.py
Network asdf has WPA encryption.
Network qwer has WPA encryption.
Network woei has WPA encryption.
Network wori has WPA encryption.
Network oprr has WPA encryption.
Network fghf has WPA encryption.
Network yruy has WPA encryption.
Network aaaa has WPA encryption.
Network qaqw has WPA encryption.
Network sxv3 has WPA encryption.
Network 8fkk has WPA encryption.
Network plnb has WPA encryption.
Network llzb has WPA encryption.
Network u2tt has WPA encryption.

Flags