`
san_yun
  • 浏览: 2663811 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

MongoDB简单介绍

 
阅读更多

MongoDB (from "humongous") 是一个可扩展的,高效的,面向文档的数据库。它的作用是介于关系数据库与key-value数据库之间的一种数据库。它具有如下几个特点:

  • 面向文档的存储结构:它底层是用一种叫JSON的结构来做为基本的存储单元,以此来提供动态的Schema,
  • 对任意属性的索引支持
  • 数据冗余与高可用性
  • 数据的自动分片
  • 丰富的查询模式
  • 支持Map/Reduce数据流处理
  • 基于GridFS的文件存储系统

2. Quickstart 64-bit linux

下载: 略

 

安装: 略

 

配置

mongodb.conf
dbpath=/duitang/data/mongodb
#bind_ip=192.168.172.8
logpath=/duitang/logs/mongodb/sys.log
logappend=true
fork = true

启动

mongod -f /duitang/dist/conf/mongodb/mongodb.conf

 

3. 一些简单的数据库操作语句

3.1 建立数据库连接

./mongo foo connects to the foo database on your local machine
./mongo 192.168.13.7/foo connects to the foo database on 192.168.13.7
./mongo dbserver.mydomain.com/foo connects to the foo database on dbserver.mydomain.com
./mongo 192.168.13.7:9999/foo connects to the foo database on 192.168.13.7 on port 9999

3.1插入数据

之前我以为需要先创建database,结果找了半天没有找到命令,原来第一次插入数据会自动创建数据库:

use shopping_item
data = {title:"nike",price:"98.99",sold:"59",status:"new",url:"http://detail.tmall.com/item.htm?spm=a1z10.1.w1036274.5.vDxCGX&id=14413088156",sourceType:"tmall",picUrl:"http://img02.taobaocdn.com/imgextra/i2/573736914/T2Gh1hXhRbXXXXXXXX_!!573736914.jpg",createDateTime:Date(),shop_id:1,catetory:"nike"}
db.taobaoitem.insert(data)
db.taobaoitem.find()

输出:

{ "_id" : ObjectId("5085011058871808a1856f9f"), "title" : "nike", "price" : "98.99", "sold" : "59", "status" : "new", "url" : "http://detail.tmall.com/item.htm?spm=a1z10.1.w1036274.5.vDxCGX&id=14413088156", "sourceType" : "tmall", "picUrl" : "http://img02.taobaocdn.com/imgextra/i2/573736914/T2Gh1hXhRbXXXXXXXX_!!573736914.jpg", "createDateTime" : "Mon Oct 22 2012 15:58:50 GMT+0800 (CST)", "shop_id" : 1, "catetory" : "nike" }

 这是的"_id"字段是数据库自动增加的。

 

批量插入:

for (var i = 1; i <= 20; i++)db.taobaoitem.insert(data)
 

3.3 数据查询

使用游标来操作数据集

var cursor = db.taobaoitem.find();
while (cursor.hasNext()) printjson(cursor.next());
 

返回指定的字段数据

db.taobaoitem.find({sold:"59"}).limit(3);

db.flashBar.find({}, {"tagId":1,"eventId":1})

 

OR查询

db.userInfo.find({$or: [{age: 22}, {age: 25}]});
 

3.4 删除数据库

 db.dropDatabase()
{ "dropped" : "shopping_item", "ok" : 1 }
 

3.x 相关资料

当然,MongoDB支持一些更加复杂的查询,如OR,AND,Group by等,可以参考如下

http://www.mongodb.org/display/DOCS/Manual

http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart

http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html

 

4. python客户端的介绍

4.1 安装

$ git clone git://github.com/mongodb/mongo-python-driver.git pymongo
$ cd pymongo/
$ python setup.py install

4.2 简单使用

>>> import pymongo import Connection
>>> connection = Connection()
你也可以指定IP与端口号
>>> connection = Connection('localhost',27017)
得到一个数据库
>>> db = connection.test_database
或者用这种方式 
>>> db = connection['test_database']
得到一个数据集
>>> collection = db.test_collection
插入数据
>>> post = {"author":"bob"}
>>> posts = db.posts
>>> posts.insert(post)/
输出所有posts表中的数据
>>> for post in posts.find():
>>>  	post
分页,排序
flashUnitColl.find(param, fields).sort(sort_cond, pymongo.DESCENDING).skip(int(page) * int(page_size)).limit(int(page_size))
删除
import bson
shopping_item_dao.remove({"_id":bson.objectid.ObjectId(id)})

like 和 OR 查询,分页:

    def query(self, query_param=None, order_param=None,page=0,page_size=15):
        '''
        查询
        query_param: 查询条件,{catetory:''}
        order_param: 排序条件(按照价格降序):{order_by:'price',order_type:'desc'} 
        '''
        param = {'status':'new'}          #默认查询条件
        order_by = '_id'    #默认排序规则
        order_type = pymongo.DESCENDING #默认排序规则
        
        if query_param:
            _ca = re.compile(query_param['catetory'])
            param['$or'] = [{'catetory':_ca,'title':_ca}]
        if order_param:    
            order_by = order_param['order_by'] 
            order_type = order_param['order_type']=='desc' and pymongo.DESCENDING or pymongo.ASCENDING
        return shopping_item_dao.find(param).sort(order_by, order_type).skip(int(page) * int(page_size)).limit(page_size)

  python API:http://api.mongodb.org/python/current/api/pymongo/cursor.html

修改操作:

flashBarColl.update({},{'$set':{eventId:41,tagId:135709}})
 

 

 

 

进入mogo client
mongo 127.0.0.1

显示帮助
help

查看有哪些数据库
show dbs 
admin 0.203125GB

使用某个db
use admin

查看db下的表
show collections
system.indexes
system.users

查询
db.system.users.find()
db.flashBar.find({}, {"tagId":1,"eventId":1})

修改

db.flashBar.update({eventId:40},{$set:{eventId:41,tagId:135709}},false










,true










)
db.unreadCount.update({notices:0},{$set:{notices:1}},false










,true










)



mongo支持like查询

	Pattern p = Pattern.compile(msg);
			Query cond = new Query(Criteria.where("msg").is(p)).limit(limit).skip(next);
			if (order == 0) {
				cond.sort().on("_id", Order.ASCENDING);
			} else {
				cond.sort().on("_id", Order.DESCENDING);
			}
			List<Comment> cmts = mongodbs.getBlogDB().find(cond, Comment.class);

 

 

Query Options

Field Selection

In addition to the query expression, MongoDB queries can take some additional arguments. For example, it's possible to request only certain fields be returned. If we just wanted the social security numbers of users with the last name of 'Smith,' then from the shell we could issue this query:

// retrieve ssn field for
 documents where last_name == 'Smith':

  db.users.find({last_name: 'Smith'}, {'ssn': 1});

  // retrieve all fields *except* the thumbnail field, for
 all documents:

  db.users.find({}, {thumbnail:0});
 

Note the _id field is always returned even when not explicitly requested.

Sorting

MongoDB queries can return sorted results. To return all documents and sort by last name in ascending order, we'd query like so:

db.users.find({}).sort({last_name: 1});
 

Skip and Limit

MongoDB also supports skip and limit for easy paging. Here we skip the first 20 last names, and limit our result set to 10:

db.users.find().skip(20).limit(10);
db.users.find({}, {}, 10, 20); // same as above, but less clear
 

slaveOk (Querying Secondaries)

When querying a replica set, drivers route their requests to the primary mongod by default; to perform a query against an (arbitrarily-selected) secondary, the query can be run with the slaveOk option. See the slaveOk page for more information.

Cursors

Database queries, performed with the find() method, technically work by returning a cursor . Cursors are then used to iteratively retrieve all the documents returned by the query. For example, we can iterate over a cursor in the mongo shell like this:

> var
 cur = db.example.find();
> cur.forEach( function(x) { print(tojson(x))});
{"n"
 : 1 , "_id"
 : "497ce96f395f2f052a494fd4"
}
{"n"
 : 2 , "_id"
 : "497ce971395f2f052a494fd5"
}
{"n"
 : 3 , "_id"
 : "497ce973395f2f052a494fd6"
}

更多文档参考:http://www.mongodb.org/display/DOCS/Aggregation#Aggregation-Group

 

分享到:
评论

相关推荐

    MongoDB数据库简单介绍

    ### MongoDB数据库简单介绍 #### MongoDB概述 MongoDB是一款开源、基于分布式文件存储的NoSQL数据库系统,它使用C++语言编写。与传统的关系型数据库不同,MongoDB采用文档数据模型来存储数据,这种数据模型非常灵活...

    mongodb java简单demo

    本篇将详细介绍如何使用Java连接MongoDB,以及进行基本的数据操作:创建集合、添加文档、修改文档、查询文档和删除文档。 首先,为了连接MongoDB,我们需要引入MongoDB的Java驱动程序依赖。在Maven项目中,可以在...

    JAVA操作MongoDB简单增删改查

    本教程将详细介绍如何使用Java与MongoDB进行交互,包括基本的增删改查(CRUD)操作。首先,我们需要引入MongoDB的Java驱动程序,这通常通过Maven或Gradle的依赖管理来实现。 1. **添加依赖** 在Maven的`pom.xml`...

    mongodb介绍及环境搭建

    ### MongoDB介绍及环境搭建 #### MongoDB概述 MongoDB是一种非关系型、无模式的文档型数据库,被广泛应用于现代Web应用程序开发中。相比于传统的关系型数据库,MongoDB提供了更高的性能、可靠性和扩展性。 - **高...

    MongoDB Java Driver 简单操作

    通过上述介绍,我们可以看到 MongoDB Java Driver 提供了一种简单而强大的方式来与 MongoDB 进行交互。无论是简单的 CRUD 操作还是复杂的查询需求,都可以通过 Java 驱动轻松实现。掌握这些基本操作对于快速开发基于...

    nodejs+mongodb搭建简单博客

    在本文中,我们将深入探讨如何使用Node.js和MongoDB搭建一个简单的博客系统。在这个过程中,我们还将介绍模版引擎Jade(现在被称为Pug)以及前端框架Bootstrap的应用。这些都是现代Web开发中的关键组件,让我们逐一...

    09 MongoDb 数据库介绍、安装、使用1

    MongoDB 数据库介绍、安装、使用 MongoDB 数据库是当前最流行的 NoSQL 数据库之一,以其灵活的数据模型、高速的读写性能和强大的扩展性而闻名。下面是 MongoDB 数据库的详细介绍、安装和使用方法。 数据库和文件...

    mongodb数据库的一些简单实用

    在 MongoDB 中创建数据库非常简单,只需使用 `use` 命令加上数据库名即可。但请注意,此时创建的数据库并不真正存在,只有当向该数据库中插入数据后才会被创建。 **示例命令**: ``` use student ``` 随后可...

    windows安装及简单配置mongodb3.6

    ### Windows安装及简单配置MongoDB 3.6 #### 一、概述 本文将详细介绍如何在Windows环境下安装和配置MongoDB 3.6版本。MongoDB是一款基于分布式文件存储的开源数据库系统,它以BSON(Binary JSON)格式存储结构化...

    MongoDb 数据库介绍、安装、使用1

    例如,当数据模型简单、需要快速迭代系统、对性能有高要求、对数据一致性要求较低,或者需要存储复杂数据结构时,NoSQL 数据库如 MongoDB 成为了首选。国内外的大型企业和创业公司,如 Google 的 BigTable、Amazon ...

    java基于jsoup+mongodb的简单爬虫入门程序

    本教程将介绍如何使用Java编程语言,结合Jsoup库进行网页抓取,并利用MongoDB数据库存储爬取的数据,帮助初学者快速入门爬虫开发。 首先,我们来了解一下Jsoup。Jsoup是一个用于处理实际世界HTML的Java库。它提供了...

    MongoDB c#驱动 dll

    通过以上介绍,我们可以看到MongoDB的C#驱动为开发者提供了丰富的功能和便捷的接口,使其能够充分利用MongoDB的特性进行数据管理。无论是简单的CRUD操作,还是复杂的聚合查询,甚至是分布式事务,都可以轻松应对。在...

    使用C#访问MongoDB实现简单增删改查

    本教程将详细介绍如何使用C#访问MongoDB,实现基本的增删改查操作。 首先,我们需要在C#项目中引入MongoDB的驱动程序。MongoDB官方提供了`MongoDB.Driver`库,可以通过NuGet包管理器安装。在Visual Studio中,右键...

    nodejs+mongodb实现简单的上传文件页面

    在本项目中,我们主要探讨如何使用Node.js和MongoDB构建一个简单的文件上传页面。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让JavaScript得以在服务器端执行,而MongoDB则是一个流行的NoSQL数据库,...

    mongodb入门

    本书将会以简单、快速、高效的方式,介绍MongoDB的基础知识和基本操作,帮助读者快速入门。通过阅读这本书,即使你是数据库领域的初学者,也能快速掌握MongoDB的核心概念,并学会在实际项目中应用它。 对于希望深入...

    MongoDB企业级分片集群搭建视频.zip

    目录 1 MongoDB的简介和安装启动.mp4 2 MongoDB服务器的启动优化.mp4 3 MongoDB客户端基础使用.mp4 4 MongoDB集合的多种查询条件.mp4 5 MongoDB索引查询与建立.mp4 ...17 MongoDB分片集群的使用介绍.mp4

    CHRIS对MongoDB介绍

    ### MongoDB与NoSQL运动简介 #### NoSQL运动的定义与特点 在理解MongoDB之前,首先需要了解NoSQL运动的概念及其重要性。NoSQL(Not Only SQL)运动是指一类非关系型数据库系统的统称,这类系统主要针对大规模数据...

Global site tag (gtag.js) - Google Analytics