MongoDB 简明使用教程
1. 启动数据库
- 连接mongodb
mongo --host 10.10.10.11 - 带登录连接mongodb
mongo --host 10.10.10.11 -u "myUserAdmin" --authenticationDatabase "admin" -p'abc123' - 指定数据库路径启动
mongod --dbpath=/root/data/db
2. 数据库操作:
2.1 db操作
- 显示数据库
show dbs - 使用,切换,新建数据库
use admin
新建后用show dbs不会立刻显示,因为没有持久化到硬盘。 - 显示当前数据库
Db - 删除当前数据库
db.dropDatebase()
2.2 collection操作
- 显示
show collections - 新建
db.createCollections(name,options) - 删除
db.collection_name.drop()
2.3 document操作
- 新建document到collection
db.collection.insert({"name":"data"}) - 增加多条,加带中括号的对象数组:
db.collectionname.insert([{name:"data1"},{name:"data2"}]) - 查看collection里全部数据
db.collectionname.find() - Save,在_id一样的情况下可以不报错,然后直接覆盖掉刚才重复Id的内容。
- db.collectionsname.save({_id:1001,name:"laowang",age:22})
- 更新document数据
- db.collectionname.update({当前数据},{替换数据},{配置项})
- db.collectionname.update({name:"laotie"},{name:"ergou"})
- 这样会删除其他内容,只存在一个name :ergou 所以要加$set保留其他的参数
- db.collectionname.update({name:"laotie"},{$set:{name:"ergou"}})
- 配置项里加{Multi:true}加一个这个的话可以让多个name:"laotie"一起改
- db.collectionname.update({name:"laotie"},{$set:{name:"ergou"}},{multi:true})
- 删除document内容,如果不加第二个参数,默认是把集合里的符合第一条的都删掉。
- Db.collectionname.remove({name:"laotie"},{justOne:true})
3. 查询操作
3.1 document 查询
经过上面的讲述,能了解到一点,基于database来查询collections里的数据都是通过db.collcetion_name.方法 来进行操作的,同理。对document的查询,我们之前也在查看collection时用过,他就是find()方法。
find里面可以加参数,不加的话就是现实collection里所有的document。
-
find()方法里可以加条件,例如db.collectionname.find({age:18})
- 如果一行一行的话不好看,可以再db.collectionname.find({age:18})后面加.pretty()
-
比较运算符
- less than 小于 $lt db.collection_name.find(age:{$lt:18})
- less than equal 小于等于 $lte
- Geater than 大于 $gt
- $gte 大于等于
- $ne 不等于
-
取范围内的 $in
- $in:[10,20,30]
- db.collection_name.find({age:{$in:[10,20,30]}})
-
并操作
- db.collection_name.find(age:18,name:"laotie")
-
或操作
- db.collection_name.find({$or:[{age:18},{name:"laotie"}]}
-
正则
-
db.collection_name.find({age:/1"})
1/})或者db.collection_name.find({age:$regex:"
-
-
限制和跳过,一般用于分页
- limit(2)
- skip(2)
-
投影
- 比如说find({这里放具体参数},{这里放投影})
- db.collection_name.find({age:{$lt:18}},{_id:0,age:1}) 这样只会显示每个对象里面只有一个age选项了
- 注意,如果投影里不加_id的选项的话 ,默认是自动显示的。只能给_id设置 0。如果别的字段不想让他显示直接不在里面加。其他的想要显示的话直接把属性加进去就行了。
-
通过Js函数来筛选数据
-
$where:
-
db.collection_name.find({$where:function(){
Return age>10}})
-
-
根据某个字段排序
- sort
- db.collection_name.find().sort({age:1}) 如果降序的话要带-1
-
计数
-
count()
-
直接在查询出来的后面加上就可以显示了
-
db.collection_name.find({$where:function(){
Return age>10}}).count()
-
-
去重
- db.student.distinct("name",{"age" : 18})
- 这样可以直接把name一样还有age为18的都给去重

浙公网安备 33010602011771号