主要介绍下mongodb的基本语法,增删改查等
我们都熟悉mysql和oracle的基本操作,这里介绍mongodb的基本语法
首先要比较下mysql和mongodb的差别
mysql和oracle都有实例的概念,即数据库实例。而mongodb同样有实例的概念,只是初始化默认提供test数据库
mongodb基本语法实战
mongodb的客户端是一个js编译器,所以支持js语法,默认连接的是test数据库
1.insert操作
>db.test.insert({"name":"jack","age":20})
>db.test.insert({"name":"tom","age":23})
>db.test.insert({"name":"tom","age":null})
2.find操作
注意:_id自动是数据库默认的guid,保证数据的唯一性;安装bson的相识书写文档,不符合语法会提示错误
>db.test.find()
>db.test.find({"name":"tom"})
(1)一个查询document里可以包含多个条件,默认多条件之间是and关系
>db.test.find({"name":"tom","age":23})
(2)有时候我们并不需要查询的所有内容,可以指定查询返回的内容
比如我们只需要name的信息,可以执行
>db.test.find({},{"name":1})
如果不想显示_id键,那么可以执行
>db.test.find({},{"name":1,"_id":0})
(3)查询条件
<1>$lt,$lte,$gt,$gte分别对应<,<=,>,>=
比如查询age在18-22之间的用户
>db.test.find({"age":{"$gte":18,"$lte":22}})
<2>or查询
比如查询年龄是20或24的数据,可以执行
>db.test.find({"age":{"$in":[20,24]}})
与in相反的是nin,如下
>db.test.find({"age":{"$nin":[20,24]}})
如果是多个条件的or查询,譬如查询年龄在20或24的,或名字都叫做tom的数据
>db.test.find({"$or":[{"age":{"$in":[20,24]}},{"name":"tom"}]})
<3>$not使用,在前边操作的基础上相反
>db.test.find({"age":{"$in":[20,24]}})
>db.test.find({"age":{"$not":{"$in":[20,24]}}})
(4)特殊类型查询
查询null,null同时匹配自身和不存在的key
>db.test.find({"age":null})
>db.test.find({"age1":null})
(5)正则表达式
>db.test.find({"name":/tom/i})
mongodb是使用perl来匹配正则表达式,所以pcre允许的语法都可以在mongodb中使用
(6)查询数组
>db.food.insert({"fruit":["apple", "banana", "peach"]})
查找水果里有香蕉的ducoment
>db.food.find({"fruit":"banana"})
查询既有apple又有banana的document
(7)查询嵌入document
>db.test.insert({"name":{"first":"Joe","last":"Schmoe"},"age":45})
>db.test.find({"name.first":"Joe","name.last":"Schmoe"})
(8)where查询
假如有个list,想查询key的值里有相等的document
>db.foo.insert({"apple":1,"banana":6,"peach":3})
>db.foo.insert({"apple":1,"spinach":4,"watermelon":4})
第二个document里,菠菜和西瓜等值,这个应该查询到
>db.foo.find({"$where":function() {
for (var current in this) {
for (var other in this) {
if (current != other && this [current] == this [other])
return true;
}
}
}
return false;
}})
(9)游标
3.update操作
注意:update方法的第一个参数是查找的条件,第二个参数是更新的值
>db.test.update({"name":"tom"},{"name":"tom","age":35})
4.remove操作
>db.test.remove({"name":"tom"})