目录

Mongodb

Mongodb

1 OverView

2 Mongodb Install

3 select

3.1 正则查询

db.prometheusRules.find({alert:{$regex:"kun test"}})

4 Update

db.collection.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)
参数说明:

query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。

例子


db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}},{multi:true})


db.member.update(
    {"is_admin" : {$exists : false}},
    {"$set" : {"is_admin" : 0}},
    false,
    true
)

5 remove

5.1

db.prometheusRules.remove({service:"powerhouse"})

6 inster

7 数据导出csv

7.1 全量数据导出-mongoexport

# 直接从某个表导出期望字段,生成CSV
mongoexport --host 10.8.8.111 --db sampleData --collection eventV4 --csv --out events.csv --fields '_id,something'

# 增加一个检索filter后导出CSV
mongoexport --host 10.8.8.111 --db sampleData --collection eventV4 --queryFile ./range.json --csv --out events.csv --fields '_id,something'

# cat range.json
{"something":{"$gt":1}}

7.1 条件查询,导出csv

$cat p0.js
db.prometheusRules.find({"labels.level":{$regex:"P0"}}).forEach(
    function(doc) {
        print(doc.labels.level + "," + doc.datacenter + "," + doc.rulegroup+","+doc.service+"," + doc.alert +","+doc.func+","+doc.annotations.description)
    }
)

#mongo <数据库名> <检索语句文件> > <导出文件>.csv
$mongo oms_server  p0.js  > p0_rule.csv

$head -3 p0_rule.csv

MongoDB shell version: 2.6.12
connecting to: oms_server
P0,aws-prod,PublicSystem,up,up服务器宕机,up{instance=~".*9100"},服务器宕机

8 索引

db.mycol.insert({"name" : "菜鸟教程1"})
#语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。
db.mycol.createIndex({"name":1},{unique:true})

db.mycol.insert({"name" : "菜鸟教程1"})
WriteResult({
	"nInserted" : 0,
	"writeError" : {
		"code" : 11000,
		"errmsg" : "E11000 duplicate key error collection: test.mycol index: name_1 dup key: { : \"菜鸟教程1\" }"
	}
})

1、查看集合索引

db.col.getIndexes()
2、查看集合索引大小

db.col.totalIndexSize()
3、删除集合所有索引

db.col.dropIndexes()
4、删除集合指定索引

db.col.dropIndex("索引名称")

9 TTL

// 创建TTL索引, 设置超时时间为24小时
db.log_events.createIndex({"createdAt": 1},{expireAfterSeconds: 24*60*60})
#插入文档
> db.log_events.insert({
    "createdAt": new Date(),
    "logEvent": 2,
    "logMessage": "Success!"
})
#查看
> db.log_events.find()
{ "_id" : ObjectId("56e219ecf694a8d2cff60cca"), "createdAt" : ISODate("2016-03-11T01:05:48.082Z"), "logEvent" : 2, "logMessage" : "Success!" }
#24小时后再次查看(已被清除)
> db.log_events.find()