zoukankan      html  css  js  c++  java
  • mongo 操作小结

    这里总结一下mongo常用操作语句,分享给大家和我自己~

    打印系统,数据库,集合的信息

    db.stats()                                    打印数据库状态

    db                             打印当前数据库名称

    db.stats()                     打印数据库状态

    show dbs                       打印所有的数据库

    show users                     打印用户

    db.getName()                   打印数据库名称

    show collections               打印当前数据库下所有的表名

    db.getCollectionNames()        打印当前数据库的表名

    db.printCollectionStats()      打印各表的状态信息

    db.printShardingStatus()       打印分片状态信息

    数据库操作

    use test                       切换到test数据库

    db.dropDatabase()              删除当前数据库

    集合操作

    # foo换成你要操作的集合名字

    插入文档

    db.users.insert({username: "smith"})   插入数据

    save和insert区别

    可以看到决定是插入一个文档还是更新,取决于_id参数。如果能根据_id找到一个已经存在的文档,那么就更新。如果没有传入_id参数或者找不到存在的文档,那么就插入一个新文档。

    insert: 若新增数据的主键已经存在,则会抛 org.springframework.dao.DuplicateKeyException 异常提示主键重复,不保存当前数据。

    save: 若新增数据的主键已经存在,则会对当前已经存在的数据进行修改操作。

    查询文档

    db.foo.distinct(key)           按照给定的条件除重

    db.foo.distinct('x')           参考上行

    db.foo.count()                 统计集合的行数

    db.foo.dataSize()              统计集合数据的大小

    db.foo.find(...).count()       计数

    db.foo.find(...).limit(n)      根据条件查找数据并返回指定记录数

    db.foo.find(...).skip(n)

    db.foo.find(...).sort(...) 查找排序

    db.col.find({},{"title":1,_id:0}).sort({"likes":-1}),这里排序的列还要加上引号?-1表示倒排

    db.foo.findOne([query]) 根据条件查询只查询一条数据

    db.foo.find( [query] , [fields])

    db.foo.find( { x : 77 } , { name : 1 , x : 1 } )

    db.users.find().pretty()       格式化查询出来的数据

    db.foo.group( { key : ..., initial: ..., reduce : ...[, cond: ...] } ) 根据条件分组

    db.foo.mapReduce(mapFunction,reduceFunction,<optional params>)

    使用and操作

    db.foo.find({$and: [

        { x: 1 },

        { username: "smith"}

    ]})

    使用or操作

    db.foo.find({$or: [

        { x: 1 },

        { username: "smith"}

    ]})

    更新文档

    只更新某个字段     db.foo.update({username: "smith"}, {$set: {country: "Canada"}})

    替换更新,而不是更新某个字段    db.foo.update({username: "smith"}, {country: "Canada"})

    删除字段      db.foo.update({username: "smith"}, {$unset: {country: 1}})

    删除文档

    根据条件删除数据       db.foo.remove(query)

    集合元数据操作

    删除集合   db.foo.drop()

    重命名集合    db.foo.renameCollection(newName)

    返回表所属的库   db.foo.getDB() get DB object associated with collection

    查看表的状态         db.foo.stats()

    查询分配到表空间大小         db.foo.storageSize()

    查询所有索引的大小             db.foo.totalIndexSize()

    查询表的总大小                      db.foo.totalSize()

    集合索引操作

    删除指定索引                 db.foo.dropIndex(name)

    删除所有索引                 db.foo.dropIndexes()

    增加索引                          db.foo.ensureIndex(keypattern,options)

    显示表的所有索引         db.foo.getIndexes()

    用户,角色,权限操作

    先切换到admin库     use admin

    创建用户

    db.createUser({

         user: "myUserAdmin",

         pwd: "abc123",

         roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]

    })

    登陆                   db.auth("myUserAdmin", "abc123")

    为用户授权      db.grantRolesToUser("myUserAdmin", [ { role: "read", db: "admin" } ])

  • 相关阅读:
    独家干货!两种低代码模型驱动开发技术对比
    GeneXus低代码产品版本大更新,助力打造专业开发团队,加速企业数字化转型!
    企业级低代码平台应具备哪些要素?(下)
    如何选择低代码平台?GeneXus低代码平台
    C语言结构体的“继承”
    C语言实现wake on lan(网络唤醒)
    Linux驱动中的异步通知
    Linux网络设备驱动概述
    Linux下的广播程序
    DCMA86P2网卡成功显示802.11p
  • 原文地址:https://www.cnblogs.com/tuhooo/p/9678876.html
Copyright © 2011-2022 走看看