当前位置:数据库 > SQLServer >>

Nosql数据库教程之初探MongoDB - 第二部分

大家都听说过nosql解决方案吧?现在是web开发中很流行的技术。 是不是也有听说过MongoDB? 你是不是准备好了来学习一下web开发中最酷的技术之一MongoDB?

上一篇文章我们介绍了MongoDB基础知识,包括安装,创建基本的Database,及其执行简单的查询操作,今天我们接着介绍一些高级特性,包括如何使用selecor与数据库互动。Selector赋予了我们更细颗粒的控制和查询的能力。

如果你想真正的使用MongoDB开发一个应用,你需要学习更多。

今天我们将扩展介绍俩个关键的MongoDB特性:

  • 高级查询
  • Mapreduce

高级查询

上一篇文章我们介绍了基本的查询并且介绍了Selector(选择器)。现在我们需要学习更复杂的查询,基于上一次的介绍我们介绍俩个关键的使用:

  • 条件运算符
  • 正则表达式

条件运算符

正如它的名字,条件运算符用来收集查询并且匹配查询内容。这里有很多,今天我们主要介绍9个关键的运算符,如下:

  • $lt - 必须小于
  • $gt - 必须大于
  • $lte - 必须小于或者等于
  • $gte - 必须大于或者等于
  • $in - 必须存在于一组条件中
  • $nin - 必须不存在于一组条件中
  • $not - 必须不等于一个条件

如果你使用过类似mysql的数据库,你基本也了解以上关键字作用。为了更好的演示,我们这里需要修改一些数据库内容。我们将添加一个age的属性。运行如下代码:

db.gbin1.update({"_id" : ObjectId("4f2f473bc9031ac66270a27b")}, {"$set" : {"age" : 18 }}); db.gbin1.update({"_id" : ObjectId("4f2f473bc9031ac66270a27c")}, {"$set" : {"age" : 45 }}); db.gbin1.update({"_id" : ObjectId("4f2f473bc9031ac66270a27d")}, {"$set" : {"age" : 65 }}); db.gbin1.update({"_id" : ObjectId("4f2f473bc9031ac66270a27e")}, {"$set" : {"age" : 43 }}); db.gbin1.update({"_id" : ObjectId("4f2f473bc9031ac66270a27f")}, {"$set" : {"age" : 22 }}); db.gbin1.update({"_id" : ObjectId("4f2f473bc9031ac66270a280")}, {"$set" : {"age" : 45 }}); db.gbin1.update({"_id" : ObjectId("4f2f473cc9031ac66270a281")}, {"$set" : {"age" : 33 }});

注意:如果你的数据库中的_id和我这里的演示不一样,请针对你自己的_id值更新数据

如果你运行以上命令后,你查询内容将得到以下输出:

db.gbin1.find(); { "_id" : ObjectId("4f2f473bc9031ac66270a27b"), "age" : 18, "dob" : "21/04/1978", "first" : "matthew", "gender" : "m", "hair_colour" : "brown", "last" : "setter", "nationality" : "australian", "occupation" : "developer" } { "_id" : ObjectId("4f2f473bc9031ac66270a27c"), "age" : 45, "dob" : "26/03/1940", "first" : "james", "gender" : "m", "hair_colour" : "brown", "last" : "caan", "nationality" : "american", "occupation" : "actor" } { "_id" : ObjectId("4f2f473bc9031ac66270a27d"), "age" : 65, "dob" : "03/06/1925", "first" : "arnold", "gender" : "m", "hair_colour" : "brown", "last" : "schwarzenegger", "nationality" : "american", "occupation" : "actor" } { "_id" : ObjectId("4f2f473bc9031ac66270a27e"), "age" : 43, "dob" : "21/04/1978", "first" : "tony", "gender" : "m", "hair_colour" : "brown", "last" : "curtis", "nationality" : "american", "occupation" : "developer" } { "_id" : ObjectId("4f2f473bc9031ac66270a27f"), "age" : 22, "dob" : "22/11/1958", "first" : "jamie lee", "gender" : "f", "hair_colour" : "brown", "last" : "curtis", "nationality" : "american", "occupation" : "actor" } { "_id" : ObjectId("4f2f473bc9031ac66270a280"), "age" : 45, "dob" : "14/03/1933", "first" : "michael", "gender" : "m", "hair_colour" : "brown", "last" : "caine", "nationality" : "english", "occupation" : "actor" } { "_id" : ObjectId("4f2f473cc9031ac66270a281"), "age" : 33, "dob" : "09/12/1934", "first" : "judi", "gender" : "f", "hair_colour" : "white", "last" : "dench", "nationality" : "english", "occupation" : "actress" }

$lt/$lte

db.gbin1.find( { "age" : { "$lt" : 40 } } );

运行以上命令,得到如下输出:

{ "_id" : ObjectId("4f2f473bc9031ac66270a27b"), "age" : 18, "dob" : "21/04/1978", "first" : "matthew", "gender" : "m", "hair_colour" : "brown", "last" : "setter", "nationality" : "australian", "occupation" : "developer" } { "_id" : ObjectId("4f2f473bc9031ac66270a27f"), "age" : 22, "dob" : "22/11/1958", "first" : "jamie lee", "gender" : "f", "hair_colour" : "brown", "last" : "curtis", "nationality" : "american", "occupation" : "actor" } { "_id" : ObjectId("4f2f473cc9031ac66270a281"), "age" : 33, "dob" : "09/12/1934", "first" : "judi", "gender" : "f", "hair_colour" : "white", "last" : "dench", "nationality" : "english", "occupation" : "actress" }

如果需要查询年龄小于等于40的呢?运行如下:

db.gbin1.find( { "age" : { "$lte" : 40 } } );

输出:

{ "_id" : ObjectId("4f2f473bc9031ac66270a27b"), "age" : 18, "dob" : "21/04/1978", "first" : "matthew", "gender" : "m", "hair_colour" : "brown", "last" : "setter", "nationality" : "australian", "occupation" : "developer" } { "_id" : ObjectId("4f2f473bc9031ac66270a27f"), "age" : 22, "dob" : "22/11/1958", "first" : "jamie lee", "gender" : "f", "hair_colour" : "brown", "last" : "curtis", "nationality" : "american", "occupation" : "actor" } { "_id" : ObjectId("4f2f473cc9031ac66270a281"), "age" : 33, "dob" : "09/12/1934", "first" : "judi", "gender" : "f", "hair_colour" : "white", "last" : "dench", "nationality" : "english", "occupation" : "actress" }

$gt/$gte

现在查询演员年龄大于47的,运行如下查询:

db.gbin1.find( { "age" : { "$gt" : 47 } } );

输出:

{ "_id" : ObjectId("4ef224bf0fec2806da6e9b29"), "age" : 65, "dob" : "03/06/1925", "first" : "arnold", &qu
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,