Mongo简单使用指南

一.Mongo的连接与断开

1.1 Mongo的连接

Mongo的连接可以使用代码连接,也可以使用shell连接.

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  • mongodb:// 这是固定的格式,必须要指定。
  • username:password@ 可选项,如果设置,在连接数据库服务器之后,驱动都会尝试登陆这个数据库
  • host1 必须的指定至少一个host, host1 是这个URI唯一要填写的。它指定了要连接服务器的地址。如果要连接复制集,请指定多个主机地址。
  • portX 可选的指定端口,如果不填,默认为27017
  • /database 如果指定username:password@,连接并验证登陆指定数据库。若不指定,默认打开 test 数据库。
  • ?options 是连接选项。如果不使用/database,则前面需要加上/。所有连接选项都是键值对name=value,键值对之间通过&或;(分号)隔开

shell连接时,默认使用mongo url即可连接.

1.2 Mongo的断开

Mongo的断开,如果使用shell,直接退出,即可断开.

二.Mongo的增删改查

2.1 database,collection的创建与删除

  • 创建database

    在shell下,通过show dbs可以查看所有的数据库,使用user xxx就能切换到数据库,如果数据库不存在就会创建.

  • 删除database

    在当前数据库下,使用db.Dropdatabase()来删除当前数据库.

  • 创建collection

    插入数据只能往collection中插入,如果数据库中没有对应的collection,插入数据时会自动创建.也可以使用db.xxx.createCollection()来创建指定名字的collection.

  • 删除collection

    在数据库下,使用db.xxx.drop()即可删除指定的collection. xxx即是collection的名字.

2.2 数据的增删改查

  • 数据的添加

    使用db.xxx.insert({"name":"yhp"})就可以在指定的xxx collection中插入一条记录.

  • 数据的删除

    collection中的数据可以通过使用db.xxx.deleteOne({条件})来删除符合条件的一个,或者使用db.xxx.deleteMany({条件})来删除多个符合条件的数据;老的接口也可以使用db.xxx.remove({条件})来删除数据.如果条件为空,那么就是删除collection下的所有数据.

  • 数据的查询

    1. 查看所有数据

      使用db.xxx.find(),即可查看所有数据.

    2. 条件查找

      • 使用db.xxx.find({"age":{$gt:30}})来查找age大于30的结果,也可以使用$lt,$lte等条件.如果查找在某个区间的,则使用db.find({"age":{$gt:30, $lt:35}}),则是找出大于30小于35的结果.
      • 使用db.xxx.find({条件},{"name":1})可以查询符合条件的结果中的指定name列.默认包含_id,如果不期望有id列,可以使用_id:0来去掉.
      • 使用db.xxx.find({条件}).sort({"name":-1}),可以按照name倒序排序结果,如果为1,那么就为正序排序.
      • 使用db.xxx.find().limit(5)可以查看前5条数据;使用db.xxx.find().skip(10)可以查看10条以后的数据;而如果想要查看第5条到第10条的数据呢?使用db.xxx.find().limit(10).skip(5)
      • 使用db.xxx.find({$or:[{"name":25}, {"name":30}]})来查询满足其中一条的数据.
      • 使用db.xxx.distinct("name")可以查询去除重复后的的数据.
  • 数据的更新

    数据的更新使用db.xxx.update({条件},{$set:{"name":"xiaoming"}}, {multi:true})可以更新满足条件的数据,其中multi为true时,表示更新所有符合条件的结果,而如果为false,则更新仅仅一条数据.

    对于新版本,则推荐使用db.xxx.updateOne()来更新单个结果,而使用db.xxx.updateMany()可以更新多个结果.

三.Mongo的复制与备份

  • 备份

    Mongo的数据复制可以通过使用mongodump -h 【主机名】:【端口号】 -d 【数据库名】-o 【备份的存储路径】-u 【用户名】 -p 【密码】来备份特定的数据库,也可以通过使用mongodump -h 【主机名】:【端口号】 -d 【数据库名】-c 【集合名称】-o 【备份的存储路径】-u 【用户名】 -p 【密码】来备份特定的集合.

  • 还原

    可以把备份的数据重新还原到数据库中,可以使用mongorestore -h 【主机名】:【端口号】-d 【还原成为的数据库名】-u 【用户名】 -p 【密码】 –dir 【备份目录】来把备份中的内容还原到数据库中;也可以通过mongorestore -h 【主机名】:【端口号】-d 【还原成为的数据库名】-u 【用户名】 -p 【密码】 –dir 【备份目录的bson文件】来把备份内容还原到指定的collection中.

四.Mongo的高级操作

  1. 索引

    • 通过使用db.COLLECTION_NAME.ensureIndex(keys[,options])可以创建索引,
    • 通过使用db.COLLECTION_NAME.reIndex()重建索引
    • 通过使用db.COLLECTION_NAME.getIndexes()查看索引
    • 通过使用db.COLLECTION_NAME.dropIndex("INDEX-NAME")可以删除指定的索引;也可以使用db.COLLECTION_NAME.dropIndexes()删除所有索引.

    集合中索引不能超过64个

  2. 引用式关系

    MongoDB 中的关系可以是:

    • 1:1 (1对1)
    • 1: N (1对多)
    • N: 1 (多对1)
    • N: N (多对多)

    假如一个用户信息中有地址字段,但是地址信息也是一个复杂的结构,那么就需要把地址信息嵌入到用户信息中,或者把地址信息的"位置"存放到用户信息中,查找的时候,先要查找到"位置"信息,然后去取其中的地址.

posted @ 2018-09-27 10:12  AISEED  阅读(526)  评论(0编辑  收藏  举报