导出
mongoexport -d db_mongo -c news -f title,date,contents,rawtag -o ~/news.json
导出使用mongo自带的mongoexport命令,参数解释如下:
-d:数据库名称
-c:集合名称
-f:字段名,不指定则为全部
-o:输出文件
导入
导出通常是在服务器上的操作,然后scp到本地,如果文件过大,首先要压缩一下
tar -czf news.tar.gz -C /home/kevin news.json
-c:创建压缩文件
-z:使用gzip压缩
-f:使用文件归档
-C:指定文件目录
通常创建压缩文件-cf或-czf是固定搭配。解压缩就不多说了,通常使用-xf参数就可以。
mongoimport -d db_mongo -c news --upsert -j 2 news.json
--upsert:插入,如果内容存在则更新
-j:指定并发数,如果文件过大,使用单线程容易卡死失败
去重
方法一
-
首先查看计数并删除集合
db.news.count()13136
db.news.drop()true
-
创建唯一索引
db.news.createIndex({title:1},{unique:true}){ “createdCollectionAutomatically” : true, “numIndexesBefore” : 1, “numIndexesAfter” : 2, “ok” : 1 }
-
导入
还是按照上面的导入方法正常导入,完成后查看内容数量
db.news.count()12552
方法二
这个方法是从网上看到的,同样能得到预期的结果,具体的解释可以从参考链接跳转过去看
db.news.aggregate([
{
$group:{_id:{title:'$title'},count:{$sum:1},dups:{$addToSet:'$_id'}}
},
{
$match:{count:{$gt:1}}
}
]).forEach(function(it){
it.dups.shift();
db.Passages.remove({_id: {$in: it.dups}});
});
正则表达式和排序
因为这两个命令都很简单,把这两个组合为一条命令
db.news.find({title:{$regex:/p2p/i}},{title:1,date:1,_id:0}).sort({date:-1}).limit(10).pretty()
上面的查找命令的含义为:找出标题中含有P2P(不区分大小写)的文章,只展示标题和日期,按照日期降序排列,最后输出10条并格式化显示。