连接数据库
创建数据库
MongoDB 创建数据库的语法格式如下:
use DATABASE_NAME
要插入数据之后show dbs 才会显示数据库,即插入
删除数据库
MongoDB 删除数据库的语法格式如下:
db.dropDatabase()
为数据库创建一个用户
use test
switched to db test
db.createUser({user:“testuser”,pwd:“testpass”,roles:[“readWrite”]})
Successfully added user: { “user” : “testuser”, “roles” : [ “readWrite” ] }
db.auth(“testuser”,“testpass”)
1
首先保证你已经以用户管理员的身份登录 admin 数据库。然后用 use 命令切换到目标数据库,同样用 db.createUser() 命令来创建用户,其中角色名为 “readWrite”。
普通的数据库用户角色有两种,read 和 readWrite。顾名思义,前者只能读取数据不能修改,后者可以读取和修改。
- 创建集合
语法:db.createCollection(name, options)
在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。例如:db.test.insert({“test”:“123”})
- 删除集合
语法:db.collection.drop()
- 插入文档
文档的数据结构和JSON基本一样。
所有存储在集合中的数据都是BSON格式。
BSON是一种类json的一种二进制形式的存储格式,简称Binary JSON。
MongoDB 使用 insert() 或 save() 方法向集合中插入文档,语法如下:
db.COLLECTION_NAME.insert(document)
或者
将数据定义成一个变量
- 更新文档
MongoDB 使用 update() 和 save() 方法来更新集合中的文档。
update() 方法
语法:
db.collection.update( , , { upsert: , multi: , writeConcern: } )
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如inc…)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
2.save() 方法
语法:
db.collection.save( , { writeConcern: } )
参数说明:
document : 文档数据。
writeConcern :可选,抛出异常的级别。
通过ObjectId修改,如果save里面没有之前文档的节点,那么这些其他节点会消失。
删除文档
MongoDB remove()函数是用来移除集合中的数据。
MongoDB数据更新可以使用update()函数。在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。
remove()语法:
db.collection.remove( , )
MongoDB 是 2.6 版本以后的,语法格式如下:
db.collection.remove( , { justOne: , writeConcern: } )
由此可见默认删除了两条数据,如果只想删除一条,即
db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)
如果你想删除所有数据
db.COLLECTION_NAME.remove({})
查询文档
语法:db.COLLECTION_NAME.find(query, projection)
query :可选,使用查询操作符指定查询条件
projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。
如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:
db.COLLECTION_NAME.find().pretty()
pretty() 方法以格式化的方式来显示所有文档。
显示指定列
db.collection.find(query, {name: 1, age: 1}) // inclusion模式 指定返回的键,不返回其他键
db.collection.find(query, {name: 0, age: 0}) // exclusion模式 指定不返回的键,返回其他键
将_id:0加入,即可隐藏_id
MongoDB 与 RDBMS Where 语句比较
| 等于 | {<key>:<value>} |
|---|---|
MongoDB AND 条件
MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。
语法格式如下:db.COLLECTION_NAME.find({key1:value1, key2:value2}).pretty()
MongoDB OR 条件
db.COLLECTION_NAME.find({$or: [ {key1: value1}, {key2:value2} ] } ).pretty()
AND 和 OR 联合使用
MongoDB $type 操作符
查询’age’列中value类型为Double的数据
查询’age’列中value类型为String的数据
MongoDB Limit() 方法
如果你需要在MongoDB中读取指定数量的数据记录,可以使用MongoDB的Limit方法,limit()方法接受一个数字参数,该参数指定从MongoDB中读取的记录条数。
db.COLLECTION_NAME.find().limit(NUMBER)
MongoDB Skip() 方法
我们除了可以使用limit()方法来读取指定数量的数据外,还可以使用skip()方法来跳过指定数量的数据,skip方法同样接受一个数字参数作为跳过的记录条数。
db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
选择跳过第一条,得到第二条数据
MongoDB 排序sort()方法
在MongoDB中使用使用sort()方法对数据进行排序,sort()方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而-1是用于降序排列。
语法:db.COLLECTION_NAME.find().sort({KEY:1})
注:skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。
MongoDB 索引
ensureIndex() 方法
MongoDB使用 ensureIndex() 方法来创建索引。
语法:db.COLLECTION_NAME.ensureIndex({KEY:1})
语法中 Key 值为你要创建的索引字段,1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。
MongoDB 聚合
MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。
语法:db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
统计age相同的数据的求和
聚合函数:
- 建立唯一索引
语法:db.COLLECTION_NAME.ensureIndex({“xxx”:1},{“unique”:true})