* 根据时间排序
db.getCollection('WP_GATHER').find({}).sort({ syscreateDate : -1 });
* 导入导出数据
./mongoexport -h localhost:27017 -uwpms -p123456 -d wpms -c WP_GATHER -o /home/deepin/wpms.json # 必须输入数据库的账号和密码
./mongoimport -h localhost:27017 -d wpms -c WP_GATHER /data/wpms.json
# 用MongoDB查昨天某个collection产生的记录数量,在mysql里面可以用between..and..或者 >、>=、<、<=来查询指定的时间范围数据,但是MongoDB有自己的语法。mongodb里比较,用 "$gt" 、"$gte"、 "$lt"、 "$lte"(分别对应">"、 ">=" 、"<" 、"<="),组合起来可以进行范围的查找。
* 查看条数
db.getCollection('WP_GATHER').find({}).count()
* 模糊查询
db.getCollection('WP_GATHER').find({"warcpath":{$regex:'/20190429/'}})
* 根据时间删除数据
db.getCollection(´xxxxx´).remove({´time´:{$gte:´08:00:00´, $lt: ´09:15:00´}})
* 分页查询
.skip(0).limit(100) * skip 跳过的数据 *limit 获取的数据
* 修改文档
# 修改mongo中的数据
db.collection.update({"name1":"val1"},{"$set": {"name2":"val2"}},false,true)
#如果没有后面两个参数,则只更新一行数据。
db.collection.update(
,
,
{
upsert: ,
multi: ,
writeConcern:
}
)
#参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。
* 创建索引
db.getCollection('').createIndex(keys,options);
# options 配置信息
background Boolean 建索引过程会阻塞其它数据库操作,background可指定以后台方式创建索引,即增加 "background" 可选参数。 "background" 默认值为false。
unique Boolean 建立的索引是否唯一。指定为true创建唯一索引。默认值为false.
name string 索引的名称。如果未指定,MongoDB的通过连接索引的字段名和排序顺序生成一个索引名称。
dropDups Boolean 3.0+版本已废弃。在建立唯一索引时是否删除重复记录,指定 true 创建唯一索引。默认值为 false.
sparse Boolean 对文档中不存在的字段数据不启用索引;这个参数需要特别注意,如果设置为true的话,在索引字段中不会查询出不包含对应字段的文档.。默认值为 false.
expireAfterSeconds integer 指定一个以秒为单位的数值,完成 TTL设定,设定集合的生存时间。
v index version 索引的版本号。默认的索引版本取决于mongod创建索引时运行的版本。
weights document 索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
default_language string 对于文本索引,该参数决定了停用词及词干和词器的规则的列表。 默认为英语
language_override string 对于文本索引,该参数指定了包含在文档中的字段名,语言覆盖默认的language,默认值为 language.
* 查看索引
db.col.getIndexes()
# explain() 查看执行的数据
db.getCollection('WP_GATHER').find({"gatherType":{$in:['0','2']},"gatherDate":{$regex:"^2019-09-16.*$"}}).explain()
# 删除索引
db.getCollection('WP_GATHER').dropIndex('gather');
db.geCollection('WP_GATHER').find({"sysGuid":"d67ce6dc-5b17-4fe3-8e9f-2a5db559d6cb"})
# 查看索引文件
db.getCollection('WP_GATHER').getIndexes();
db.getCollection('WP_GATHER').getIndexSpecs()
# 查看索引大小
db.getCollection('WP_GATHER').totalIndexSize()
db.currentOp()
db.killOp()
===========下面省略,实操待整理==============
* 查询代码
BasicDBObject query = new BasicDBObject();
query.put("siteId", siteId);
query.put("title", new BasicDBObject("$ne", ""));
query.put("ofdPath", "");
//尝试次数为空或者小于等于最大次数
BasicDBList values = new BasicDBList();
values.add(new BasicDBObject("palceholder1", ""));
values.add(new BasicDBObject("palceholder1", new BasicDBObject("$lte", SysParamUtil.getSysParam("edrms.system.ofd.convert.trycount","3"))));
query.put("$or", values);
BasicDBObject fieldsObject = new BasicDBObject();
fieldsObject.put("sysGuid", true);
fieldsObject.put("url", true);
fieldsObject.put("ofdPath", true);
fieldsObject.put("title", true);
fieldsObject.put("palceholder1", true);//转换次数
DBCursor dbCursor = template.getCollection(GATHER_TABLE_NAME).find(query, fieldsObject).sort(new BasicDBObject("gatherDate",1))
.limit(Integer.parseInt(SysParamUtil.getSysParam("edrms.system.ofd.convert.limit","10")));
int sum = 0;
try {
List> resultList = new ArrayList<>();
while (dbCursor.hasNext()) {
DBObject object = dbCursor.next();
String url = String.valueOf(object.get("url"));
String sysGuid = String.valueOf(object.get("sysGuid"));
String title = String.valueOf(object.get("title"));
String palceholder1 = String.valueOf(object.get("palceholder1"));
db.getCollection('WP_GATHER').find({"siteGuid":"60694835-e6cf-47f9-bee6-e34a3c46823b","ofdPath":"","title":{$ne:""}
,$or:[{"palceholder1":""}]}).sort({"gatherDate":1})
db.getCollection("WP_GATHER").update({"batch":"20190803"},{$set:{ ofdPath:"",palceholder1:""}},false,true)
db.getCollection("WP_GATHER").find({"sysGuid":"e19ff058-f9b2-4064-90cd-5fea2cca6f39"})
#对mongo实例来说,每个host允许链接的最大链接数,这些链接空闲时会放入池中,如果链接被耗尽,任何请求链接的操作会被阻塞等待链接可用,推荐配置10
connectionsPerHost=10
#当链接空闲时,空闲线程池中最大链接数
minPoolsSize=5
#此参数跟connectionsPerHost的乘机为一个线程变为可用的最大阻塞数,超过此乘机数之后的所有线程将及时获取一个异常.eg.connectionsPerHost=10 and threadsAllowedToBlockForConnectionMultiplier=5,最多50个线程等级一个链接,推荐配置为5
threadsAllowedToBlockForConnectionMultiplier=5
#一个线程等待链接可用的最大等待毫秒数,0表示不等待,负数表示等待时间不确定,推荐配置120000
maxWaitTime=120000
#链接超时的毫秒数,0表示不超时,此参数只用在新建一个新链接时,推荐配置10,000.
connectTimeout=10000
#此参数表示socket I/O读写超时时间,推荐为不超时,即 0 Socket.setSoTimeout(int)
socketTimeout=0
#该标志用于控制socket保持活动的功能,通过防火墙保持连接活着
socketKeepAlive=false
#true:假如链接不能建立时,驱动将重试相同的server,有最大的重试次数,默认为15次,这样可以避免一些server因为一些阻塞操作零时down而驱动抛出异常,这个对平滑过度到一个新的master,也是很有用的,注意:当集群为复制集时,驱动将在这段时间里,尝试链接到旧的master上,而不会马上链接到新master上
#false 当在进行socket读写时,不会阻止异常抛出,驱动已经有自动重建破坏链接和重试读操作. 推荐配置false
autoConnectRetry=false
#重新打开链接到相同server的最大毫秒数,推荐配置为0,如果 autoConnectRetry=true,表示时间为15s
#com.jd.mongodbclient2.mongo.JDClientMongo.maxAutoConnectRetryTime=false
#表示当没有手动关闭游标时,是否有一个自动释放游标对象的方法,如果你总是很小心的关闭游标,则可以将其设为false 推荐配置true
#com.jd.mongodbclient2.mongo.JDClientMongo.cursorFinalizerEnabled=true
#安全模式
com.jd.mongodbclient2.driver.MongoDBDriver.safe=true
#为true表示读写分离