日期:2014-05-16 浏览次数:20452 次
在上一节一起学习了增删查改的基本方法,然而对于关系类数据库比如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'}]})
小于("$lt")、小于等于("$lte")、大于("$gt")、大于等于("$gte")、不等于("$ne")可以用来作为年龄等方法的查询。
$in 表示在其范围内,$nin则表示不在其范围内不在次做详细的代码展示了,既然能理解$or那么就