MongoDB数据库的使用
在ubuntu下使用MongoDB作为数据库。
可以自动安装mongodb服务:
sudo apt-get install mongodb-clients
sudo sudo apt-get install mongodb-server
安装:
我用的64位系统,在这个网址下载:
http://downloads.mongodb.org/linux/mongodb-linux-x86_64-1.4.4.tgz
32位的:
http://downloads.mongodb.org/linux/mongodb-linux-i686-1.4.4.tgz
总看到用curl下载软件,可是我没能安装好curl,只能手动下载安装了,好在也不是很麻烦。
tar xzf mongodb-linux-x86_64-1.4.4.tgz
名字太长了,改名:
mv mongodb-linux-x86_64-1.4.4 mongodb
创建数据文件夹
默认情况下,MongoDB会在/data/db/这个文件夹存放数据,这个文件夹需要自己手动创建。
通过如下方式创建:
通过如下方式创建:
$ adduser mongodb $ passwd mongodb $ sudo mkdir -p /data/db/ $ sudo chown `id -u` /data/db $ chown -R mongodb:mongodb /data
愉快的运行MongoDB
$ ./mongodb/bin/mongo
> db.foo.save( { a : 1 } )
> db.foo.find(
看到输出结果:{ "_id" : ObjectId("5500f8dea6d9c8bb1593cb34"), "a" : 1 }
终于安装好了。
还需要继续探索它的用法。
使用之前要先开启mongodb!!!sudo service mongodb start
关闭命令:
sudo service mongodb stop
运行MongoDB:
直接在命令行输入mongo。(要是不行就加上路径)
python中有一个模块用来对数据库进行操作:pymongo。
安装:
sudo apt-get install python-pymongo
基本用法:
#-*-coding:utf-8-*- import pymongo import json #connect to database连接运行在本地机器上默认端口(27017)上的MongoDB服务器 conn = pymongo.Connection("localhost", 27017) #通过对象属性或像字典一样使用对象来获得代表一个特定数据库的对象。如果数据库不存在,则被自动建立 db = conn['example'] #db = conn.example # 插入第一个文档时,MongoDB会自动创建集合 widgets = db['widgets'] #widgets = db.widgets # insert方法指定一个Python字典来插入文档 widgets.insert({"name": "flibnip", "description": "grade-A industrial flibnip", "quantity": 3}) # 在数据库对象上调用collection_names方法获得数据库中的集合列表 print "the list of collections:\n",db.collection_names() # 取出文档,doc's type is dict doc=widgets.find_one({"name": "flibnip"}) print doc print doc['name'] #json模块并不知道如何转换MongoDB的ObjectID类型到JSON,处理方法:在序列化之前从字典里删除_id键 del doc["_id"] jdoc=json.dumps(doc) print "json format:\n",jdoc widgets.insert({"name": "smorkeg", "description": "for external use only", "quantity": 4}) widgets.insert({"name": "clobbasker", "description": "properties available on request", "quantity": 2}) # 调用集合的find方法来获得集合中所有文档的列表 print "list of all documents:" for doc in widgets.find(): print doc # 获得文档的一个子集 print "the list of the documents whose quantity is 4:" for doc in widgets.find({"quantity": 4}): print doc # 删除所有name键的值为flipnip的文档 widgets.remove({"name": "flibnip"})