有激情,热情,做自己喜欢做的事!
分类: NOSQL
2014-06-07 19:38:46
摘自:参考:
在mongodb中基本的概念是文档、集合、数据库
mongodb的数据库操作
1.增(插入)使用insert方法
>db.test.insert({"name":"abc","pwd":"zxvf","age":21,"sex":"male"}) //添加一个用户
2.删(删除)使用remove方法
>db.test.remove({"name":"abc"}) //删除name为abc的用户
>db.test.remove({}) //删除所有用户
>db.test.drop() //删除整个集合,包括文档数据
>db.dropDatabase() //删除当前数据库
3.改(修改)使用update方法
db.collection.update( criteria, objNew, upsert, multi )
> db.test.update({"name" : "zwq"},{"name":"zwq","pwd" :"newpwd","age":21,"sex":"male" })
上例中我们其实值修改pwd,但是第二个参数中应该把所有信息都加上,否则会删除原来的数据,只建立一个pwd
上述方法是一种整体更新的方法,mongodb提供了两种方式来实现局部更新。
$inc,就是increase的缩写,每次修改会在原有的基础上 自增$inc指定的值,如果“文档”中没有此key,则会创建key.
>db.test.update({"name":"zwq"},{$inc:{"age":10}}) 将原来年龄增长10,也就是31
$set修改器,即直接赋值
>db.test.update({"name":"zwq"},{$set:{"age":31}})
mongodb还提供了许多其他的修改方式
$push会向已有的数组加入一个元素,要是没有就会创建一个新的数组
>db.test.update({"name":"zwq"},{"$push":{"email":"xx@gmail.com"}})
4.查(查询)
>db.test.find(); //查询test集合中所有的数据
> db.test.find({"sex":"female",age:{$gt:21}},{"name":1,"_id":0,"age":1})
//查询test集合中性别为女年龄大于21的用户姓名和年龄信息,不显示_id 信息
5.条件操作符
>db.test.find({age:{$lt:21}}) //查询年龄小与21岁的用户
$type操作符是基于BSON类型来检索集合中匹配的结果。
MongoDB中可以使用的类型:
类型描述 | 类型值 |
---|---|
Double | 1 |
String | 2 |
Object | 3 |
Array | 4 |
Binary data | 5 |
Object id | 7 |
Boolean | 8 |
Date | 9 |
Null | 10 |
Regular expression | 11 |
JavaScript code | 13 |
Symbol | 14 |
JavaScript code with scope | 15 |
32-bit integer | 16 |
Timestamp | 17 |
64-bit integer | 18 |
Min key | 255 |
Max key | 127 |
>db.test.find({"name" : {$type : 4}}) //查询所有姓名是数组的文档
5.排序
在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排序,而-1是用于降序排列。
例:>db.test.find().sort({age:1,name:1}) //按年龄升序和姓名升序的方式排列
6.限制查询 limit方法和skip方法
如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数
>db.test.find().limit(3) //查询结果集中取三条
我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。skip()方法默认参数为0,limit()默认参数为1
>db.test.find().limit(2).skip(3) //跳过3条,取出之后两条数据 >db.test.find().limit().skip(3) //跳过3条,默认只取之后一条,默认limit为1 >db.test.find().skip(3) >db.test.find().limit(0).skip(3) //这两种方式都一样,跳过3条取出全部