mongodb所有的命令,都可以通过commands执行,都是从commands演化而来:Database Commands
从command中包装的部分命令,到mongodb shell method,使命令更容易运行:mongo Shell Methods
mongodb aggregation命令的管道操作:Aggregation Pipeline Operators
- runCommand命令里的第一个字段就代表命令名称,第一个字段的内容一般都是写集合名 db.runCommand({aggregate: "<collection>",pipeline: [ <stage>, <...> ], explain: <boolean>}),如果把第一项拿出来,就是shell method了,例如db.sz_user.aggregate()
- aggregate,()里面就是管道操作。
db.sz_user.aggregate({$geoNear:{spherical:true,limit:10,maxDistance:20,distanceField:"dis",near:{ type:"Point", coordinates: [113.943497, 22.458849]}}})
- mongo bigdata1:28300
进入bigdata1的28300端口的实例的命令行,具体进入的是shard、configServer的,还是mongos要看此端口配置成什么实例,进入不同的实例,可以使用的命令也不一样,进入某个shard集,只能做相关shard的操作,如果我们配置成了多实例集群,最好进入mongos的cli。admin代表的是数据库,也可以不加admin,进入cli之后再use admin。 - db.*详解 mongos cli中的调用方法都需要加上(),db.*代表的是在数据库中操作,所以在执行db.*命令前,都需要进入某个数据库才能执行,如果没有进入某个数据库,默认是在test数据库中。db.tb1.find(),tb1代表的就是collection,find()是方法。
- db.tb1.help():查看集合tb1有那些方法可以调用。
- db.aa.stats():查看集合aa的状态,包含这个集合是否启用shard,输入那个shard等等。
- db:显示当前所在的数据库。
- admin/config数据库详解
admin库是管理库,一些重要的命令,需要切换到此库之后才能执行。config库是config server的配置库,一些shard/chunk等等信息都存在此库中,比如查看chunk分布信息:db.chunks.find(),查看shard信息: db.shards.find()。 - sh.*详解,mongo分片的相关命令,数据库或者表只有分片了之后,才会存储到不同的分片中,否则的话只会存储到primary shard中。
- sh.shardCollection("test.test",{"key":{"_id":1}}):启用test库test集合的分片功能,或者进入admin库,执行命令:db.runCommand({shardcollection:'test.test',key:{_id:1}}),方法中的参数参考:Sharding Reference
- sh.enableSharding(dbname)启用某个数据库的shard功能。
参考:MongoDB分片实战(二):Sharding 【mongoDB运维篇④】Shard 分片集群
- rs.*详解
- rs.status:只有进入shard的cli才可以查看,此shard的每一个副本都可以执行查看,可以查看到那个分片是primary分片,在别的cli中执行,注意看errmsg。
- runCommand形式创建2dsphere索引
db.runCommand({
createIndexes: "test",
indexes: [{
key: {
"loc": "2dsphere"
},
name: "loc_index",
background: true
}]
})