欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mongodb入门

程序员文章站 2022-05-09 11:39:37
...

关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合”就是对应关系数据库中的“表”,“文档”对应“行”。

 

准备工作:下载安装mongodb

 

1、启动mongodb

# mongodb数据存储路径不能有空格

mongod --dbpath=D:/mongodb

# mongodb默认使用27017端口

 

 

2、基本操作

 

#登录

cd $mongodb/bin
mongo

 

1> insert

db.person.insert({"name":"jack","age":25})
db.person.insert({"name":"tom","age":20})
db.person.insert({"name":"jason","age":21})

var rose={"name":"rose","sex":1,"age":18}
db.person.insert(rose)

 

2> find

# 查询所有

db.person.find()

 # "_id": 这个字段是数据库默认给我们加的GUID,目的就是保证数据的唯一性。

 

# 查询jack用户信息

db.person.find({"name":"jack"})

 

# 日常开发中,常见查询的操作

① 范围查询:>, >=, <, <=, !=, = 在mongodb中分别对应$gt, $gte, $lt, $lte, $ne

#查询年龄小于等于20岁的用户

db.person.find({"age":{$lte:20}})

 

 

② 逻辑关联:OR,In,not in 在mongodb中分别对应$or, $in, $nin

# 查询用户名包含jack 和rose的用户

db.person.find({"name":{$in:["jack", "rose"]}})

 

# 查询用户名为jack 年龄为25岁的用户

db.person.find({"name":"jack","age":20})

 

# 查询用户名以j开头的用户信息

db.person.find({"name":/^j/})

 

# 查询用户名以e结尾的用户信息

db.person.find({"name":/e$/})

 

# where查询

db.person.find({$where:function(){return this.name=="jack"}})

 

3> update

# update方法的第一个参数为“查找的条件”,第二个参数为“更新的值”

db.person.update({"name":"tom"},{"name":"joe","age":19})

 

#局部修改器$inc 和 $set

#$inc修改器

db.person.update({"name":"jack"},{$inc:{"age":30}})

 

#$set修改器

db.person.update({"name":"jack"},{$set:{"age":20}})

 

4> remove

# 删除jack用户信息

db.person.remove({"name":"jack"})

 

3、聚合

1> count

# 统计用户数

 db.person.count()

 

# 统计年龄在20岁的用户数

 db.person.count({"age":20})

  

2> distinct

#查询年龄段

db.person.distinct("age")

 

3> group

#按照age进行分组

db.person.group({"key":{"age":true},"initial":{"person_name":[]},"$reduce":function(cur,prev){prev.person_name.push(cur.name);}})

 

 

4> mapReduce

mapReduce其实是一种编程模型,用在分布式计算中,其中有一个“map”函数,一个”reduce“函数。

① map:这个称为映射函数,里面会调用emit(key,value),集合会按照你指定的key进行映射分组。 ②reduce:这个称为简化函数,会对map分组后的数据进行分组简化,注意:在reduce(key,value)中的key就是emit中的key,vlaues为emit分组后的emit(value)的集合。

db.orders.insert({"cust_id":"A123","amount":500,"status":"A"})
db.orders.insert({"cust_id":"A123","amount":250,"status":"A"})
db.orders.insert({"cust_id":"B212","amount":200,"status":"A"})
db.orders.insert({"cust_id":"A123","amount":300,"status":"D"})
db.orders.mapReduce(
	function(){emit(this.cust_id,this.amount);},//map
	function(key, values){return Array.sum(values)},//reduce
	{
	 query:{status:"A"},
	 out:"order_totals"	
	}
)
db.order_totals.find()

 参考:http://www.cnblogs.com/loogn/archive/2012/02/09/2344054.html

4、游标

var list = db.person.find();
list.forEach(function(x){
	print(x.name);
})

 

 

 

相关标签: nosql mongo