zoukankan      html  css  js  c++  java
  • 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 (多对多)

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

  • 相关阅读:
    BestCoder Round #29 1003 (hdu 5172) GTY's gay friends [线段树 判不同 预处理 好题]
    POJ 1182 食物链 [并查集 带权并查集 开拓思路]
    Codeforces Round #288 (Div. 2) E. Arthur and Brackets [dp 贪心]
    Codeforces Round #287 (Div. 2) E. Breaking Good [Dijkstra 最短路 优先队列]
    Codeforces Round #287 (Div. 2) D. The Maths Lecture [数位dp]
    NOJ1203 最多约数问题 [搜索 数论]
    poj1426
    POJ 1502 MPI Maelstrom [最短路 Dijkstra]
    POJ 2785 4 Values whose Sum is 0 [二分]
    浅析group by,having count()
  • 原文地址:https://www.cnblogs.com/yhp-smarthome/p/9711644.html
Copyright © 2011-2022 走看看