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那么就一定能理解。

SORT排序:

升序方式:1

降序方式:-1

下面举个例子:

db.user.find({gender: 'm', $or: [{nationality: 'english'}, {nationality: 'american'}]}).sort({nationality: -1});
这是使用国籍的降序排列,我们看看结果

那么如何使得国籍降序,而名字使用升序排列呢?

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

但是如果是很大的数据我们需要限制返回两条怎么办呢?也很简单,语句如下:

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

使用limit来限制返回条数。


UPDATE操作:

有时候我们需要对指定的条目的其中的一项进行更新修改,需要一种不像上一节中的那么繁琐的方法

比如我们需要更新James Caan的记录,指定头发颜色是灰色,不是褐色。那么我们执行如下:

db.user.update({first: 'james', last: 'caan'}, {$set: {hair_colour: 'black'}})

代码执行完毕后,shell不会提示任何成功或者失败的消息,这时我们需要再进行查看一下

db.user.find({first: 'james', last: 'caan'})


这时,我们可以看到james caan的头发颜色变了~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值