MongoDB 简明使用教程

1. 启动数据库

  • 连接mongodb mongo --host 10.10.10.11
  • 带登录连接mongodbmongo --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的都给去重

性能优化

权限管理

posted @ 2021-03-10 21:30  傲气熊鹰  阅读(248)  评论(0)    收藏  举报