日期:2014-05-16 浏览次数:20539 次
在上一节一起学习了增删查改的基本方法,然而对于关系类数据库比如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那么就