日期:2014-05-16  浏览次数:20459 次

mongodb学习(三)

在上一节一起学习了增删查改的基本方法,然而对于关系类数据库比如mysql来说还有条件查询等等,现在我们来深入学习。

INSERT操作:

对于单行插入数据来说,上一节已经研究过,不过当我们需要批量插入该怎么办呢?

在mongodb里面没有批量插入的语句,因此我们可以使用高级语言中的for循环方法,比如用python编写一个简单的mongodb的操作语句,其中加入for循环:

import pymongo

conn = pymongo.Connection('127.0.0.1',27017)
db=conn.test
list=['Trony','Tom','Mary','Jacky','Jhonny']
for i in list:
   db.user.insert({"name":i})


其结果是这样的,表明for循环确实可是实现mongodb的批量插入,实践证明~


FIND操作:

Selector是对于mongo来说类似sql中使用的where语句。它允许我们执行如下操作:  指定必须匹配,类似, AND语句 指定可选匹配,类似, OR语句 指定必须存在。

我们首先在db.user中插入这些数据

db.user.insert({
     first: 'matthew',
     last: 'setter',
     dob: '21/04/1978',
     gender: 'm',
     hair_colour: 'brown',
     occupation: 'developer',
     nationality: 'australian',
     age:'20'
 });
db.user.insert({
     first: 'james',
     last: 'caan',
     dob: '26/03/1940',
     gender: 'm',
     hair_colour: 'brown',
     occupation: 'actor',
     nationality: 'american',
     age:'40'
 });
db.user.insert({
     first: 'arnold',
     last: 'schwarzenegger',
     dob: '03/06/1925',
     gender: 'm',
     hair_colour: 'brown',
     occupation: 'actor',
     nationality: 'american',
     age:'16'
});
db.user.insert({
     first: 'tony',
     last: 'curtis',
     dob: '21/04/1978',
     gender: 'm',
     hair_colour: 'brown',
     occupation: 'developer',
     nationality: 'american',
     age:'38'
 });
db.user.insert({
     first: 'jamie lee',
     last: 'curtis',
     dob: '22/11/1958',
     gender: 'f',
     hair_colour: 'brown',
     occupation: 'actor',
     nationality: 'american',
     age:'27'
 });
db.user.insert({
     first: 'michael',
     last: 'caine',
     dob: '14/03/1933',
     gender: 'm',
     hair_colour: 'brown',
     occupation: 'actor',
     nationality: 'english',
     age:'15'
 });
db.user.insert({
    first: 'judi',
     last: 'dench',
     dob: '09/12/1934',
     gender: 'f',
     hair_colour: 'white',
     occupation: 'actress',
     nationality: 'english',
     age:'42'
 });

比方说,我们要找到所有性别是女性的,我们可是使用一下语句
db.user.find({'gender':'f'})
这时在shell里面显示出来的就是所符合的条数。

然后如果我们需要找到性别是男性或者是来自于美国的人,我们需要用到类似与sql中的OR语句

db.user.find({'gender':'m',$or:[{'nationality':'english'}]})

这时会出现我们需要找到的,符合其中一个条件的人数


如果需要知道国籍为english或者american呢?也很简单~如下

db.user.find({'gender':'m',$or:[{'nationality':'english'},{'nationality':'american'}]})

mongodb还有很多的条件,比如:
小于("$lt")、小于等于("$lte")、大于("$gt")、大于等于("$gte")、不等于("$ne") 
可以用来作为年龄等方法的查询。

$in 表示在其范围内,$nin则表示不在其范围内
不在次做详细的代码展示了,既然能理解$or那么就