[ mongoDB ] mongoDB的基本操作

mongoDB的基本操作

强烈推荐参考官方用户手册:

http://www.mongodb.org/display/DOCS

 

1)插入(insert)

插入的value是json对象,以下示例循环添加了10个用户信息,字段可以是字符串、数值、对象、数组等。

通过VUE查看:

2)查询(find)

2.1——查询全部内容:

db.user.find({}) 

我们可以称{}中的内容为选择器,这里选择器为空,可以省略,指获取collection中所有内容。

2.2——字段查询

db.user.find({name:'fox1'})

2.3——排序(sorting)

db.user.find({}).sort({age:1})

1代表升序,-1代表降序

2.4——skip and limit(可以用于分页)

db.user.find({ }).skip(5).limit(5).sort({ "age" : 1 });

例如,对user表进行分页,写一个js函数提供分页功能。

function pagination(pageNumber , nPerPage){
db.user.find().skip((pageNumber-1)*nPerPage).limit(nPerPage).forEach(
function(user){print(user.name+"<p>")});}

2.5——游标

var cur=db.user.find();

cur.forEach(function(x){ print(tojson(x))});

具体参考:

http://www.mongodb.org/display/DOCS/Querying

高级查询

参考:http://www.mongodb.org/display/DOCS/Advanced+Queries

2.6——条件运算符

#<,<=,>,>=

#查找18<age<28的用户

db.user.find({age:{$gt:18,$lt:28}})

 

#$all,全包含

#查找邮箱在'fox@126.com','hg0@fox.com'范围内的用户

db.user.find({email:{$all:['fox@126.com','hg0@fox.com']}})

 

#$exists,表示字段是否存在

#查找存在字段a的用户

db.user.find({a:{$exists:true}})

#$mod,取模

#找到本命年的用户

db.user.find({age:{$mod:[12,0]}})

等价于:

db.user.find("this.age % 12 == 0")

#$ne,不等于

#获取age不等于10的用户

db.user.find({age:{$ne:10}})

#$in,$nin

db.user.find({age:{$in:[10,12,14]}})

db.user.find({age:{$nin:[10,12,14]}})

#$nor,$or,$and 关系运算符

#查找age<15或者age>25的用户,并按照age排序

db.user.find({$or:[{age:{$lt:15}},{age:{$gt:25}}]}).sort({age:1})

#$size

#查找有两个邮箱地址的用户

db.user.find({email:{$size:2}})

#$type

#根据字段类型进行查找

字段类型对应关系

Type NameType Number
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

2.7——正则查询

2.8——数据中数据的查询

#可以直接对数组中的某一个元素进行检索

#查询邮箱包含hg6@fox.com的用户

db.user.find({email:'hg6@fox.com'})

#elemMatch

#数组元素中应用数学表达式(match expression)

2.9——embedded Object(内置对象属性查询)

#查询在长沙的用户

db.user.find({'address.city':'changsha'})

注意:此时的address.city需要引号(整体化)

2.10——非

#$not

#查找大于等于15岁的用户

db.user.find({age:{$not:{$lt:15}}})

注意:

db.user.find({$not:{age:{$gt:15}}})不正确!!!

2.11——js表达式

#查找age大于25的用户

a) db.user.find({age:{$gt:25}})

b) db.user.find({$where:"this.age > 25"})

c) db.user.find("this.age > 25")

d) f = function(){return this.age>25;}

    db.user.find(f)

写复杂条件,这个$where比较方便强大了!

3)更新(update)

3.1——更新语法:db.collection.update( criteriaobjNewupsertmulti )

criteria:数据范围,需要修改数据的查询条件

objNew:更新数据

upsert:如果没有查询到则新增,但只新增一条数据

multi :默认只更新第一条数据

3.2——#$inc

#必须是数值型字段

#给fox1加一岁

db.user.update({name:'fox1'},{$inc:{age:1}})

3.3——#$set

#给fox1变成10岁

db.user.update({name:'fox1'},{$set:{age:10}})

3.4——#$unset

#删除某个字段

3.5——#针对数组的操作:$push,$pushAll,$addToset,$each,$pop,$pull,$pullAll

#给fox1新增一个邮箱($push)

db.user.update({name:'fox1'},{$push:{email:'fire009@126.com'}})

#$pop:{field:1}删除最后一个元素,$pop:{field:-1}删除第一个元素。

#$pull删除数组中指定条件的数据。

#使用$进行位置上的操作(指定数组上某个元素)

原文地址:https://www.cnblogs.com/huangfox/p/2433067.html