怎么利用mongo import json输出json

博客分类:
mongodb还提供了mongoexport 和 mongoimport 这两个命令来导出或导入数据,导出的数据是json格式的,也可以是csv格式的。也可以实现备份和恢复的功能。
具体用 mongoexport --help查看。这里主要介绍一下-q这个条件怎么写。
比如我要导出username='test'的所有记录,则可以写成
mongoexport -d search_logs -c key_words -q "{'username' : 'test'}" -o mongo_$(date +%F).json
注:$(date +%F)为shell命令,会输出当前日期,格式为
如果要导出大于某个时间段内的数据,比如,我的数据结构为
db.key_words.find({request_time:new Date(7)})
{ "_id" : ObjectId("4f3e75ffde000001"), "username" : "test800", "request_time" : ISODate("T15:45:03.417Z"), "search_word" : "s" }
我要导出reques_time大于"T15:00:00Z"这个时间的数据,则先把这个时间类型做一下转换
& ISODate("T15:00:00Z").valueOf()
mongoexport -d search_logs -c key_words -q '{request_time:{$gte:new Date(0)}}' -o mongo_$(date +%F).json
注意,如果-q后面的条件是用“”双引号括起来的话$符需要做一下转义\$
mongoexport -d search_logs -c key_words -q "{request_time:{'\$gte':new Date(0)}}" -o mongo_$(date +%F).json
我在这个问题上搞了一晚上,记录一下,觉得可能是由于json和bson之间的不同造成的,具体原因不是很明白,希望有了解的各路侠客们指导一下,谢谢。
要想还原的话,用mongoimport就可以了
mongoimport -d search_logs -c key_words --file mongo_$(date +%F).json
浏览 13137
注意,如果-q后面的条件是用“”双引号括起来的话$符需要做一下转义\$兄弟,你的提示很有价值啊,我也搞了很久,看了提示节约不少时间
浏览: 104027 次
来自: 北京
我试验了一下,针对中文也是可以实现元素唯一的啊,难道是数据库版 ...
牛逼, 我也是工作区间的名字和project的名字重名,根据你 ...
引用注意,如果-q后面的条件是用“”双引号括起来的话$符需要做 ...
学习了,挺好
suchj 写道jimylion 写道那个脚本是真的吗?脚本本 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'博客分类:
来,我给你们看一段神奇的mongodb的mapreduce操作!
首先我们执行一段js,用来往mongodb数据库里插入几条记录:
//insert.js
for(var i=0;i&5;i++){
db.RegistRecord.save({"ip":"11.11.11.11","account":"ongyong"});
for(var i=0;i&2;i++){
db.RegistRecord.save({"ip":"11.11.11.22","account":"ongyong22"});
for(var i=0;i&1;i++){
db.RegistRecord.save({"ip":"11.11.11.33","account":"ongyong33"});
没有问题,随后我们来使用mongodb的mapreduce来进行一个统计,统计同一ip在记录里出现的次数,很简单的mapreduce入门例子,写法如下,不多解释。
//regmp.js
printjson("job start");
var map = function() {
emit(this.ip, {value: 1});
var reduce = function(key, values) {
var count = 0;
values.forEach(function(v) {
count += v['value'];
return {count: count };
var res = db.runCommand({mapreduce:"RegistRecord",map:map, reduce:reduce, out:"log_results"});
printjson("job end")
然后我们执行这个js脚本。
我们看结果:
"_id" : "11.11.11.11",
"value" : {
"count" : 5.0
"_id" : "11.11.11.22",
"value" : {
"count" : 2.0
"_id" : "11.11.11.33",
"value" : {
"value" : 1.0
OK,运算结果正确,各ip分别出现了5次,2次,1次。
OK,到这里,如果你认为我就是要为了演示这个东西,那我肯定是来找喷的,哥们儿,这特么一点也不神奇。神奇的事情在下面,我们继续看:
当我们把记录数增加到某一个量级,(如2000)
//insert.js
for(var i=0;i&2000;i++){
db.RegistRecord.save({"ip":"11.11.11.11","account":"ongyong"});
for(var i=0;i&2;i++){
db.RegistRecord.save({"ip":"11.11.11.22","account":"ongyong22"});
for(var i=0;i&1;i++){
db.RegistRecord.save({"ip":"11.11.11.33","account":"ongyong33"});
然后我们再次执行regmp.js这段代码运行mapreduce,注意,绝对没有任何改动,这时,神奇的事情出现了,看结果:
"_id" : "11.11.11.11",
"value" : {
"count" : NaN
"_id" : "11.11.11.22",
"value" : {
"count" : 2.0
"_id" : "11.11.11.33",
"value" : {
"value" : 1.0
11.11.11.11这个ip的结果出现了一个非数值型字符串!!!而其余两个正确。神奇啊!不明白啊!困惑啊!!
然而,我得找原因啊,我想知道,到底在经过map函数后,reduce函数接受到的values的格式是怎样的,我稍微改了下reduce函数,我不进行任何操作,直接把value作为结果保存。
改动后的Reduce函数如下:
var reduce = function(key, values) {
return {count: values };
首先,看记录数各为:5,2,1时,经过map函数处理,然后传给reduce函数的参数格式如下:
"_id" : "11.11.11.11",
"value" : {
"count" : [{
"value" : 1.0
"value" : 1.0
"value" : 1.0
"value" : 1.0
"value" : 1.0
"_id" : "11.11.11.22",
"value" : {
"count" : [{
"value" : 1.0
"value" : 1.0
"_id" : "11.11.11.33",
"value" : {
"value" : 1.0
没有问题!传到reduce函数中的value是一个固定格式的json串。我们可以对count中的各元素进行数值运算。
然后,我们看记录数为2000的,结果:
"_id" : "11.11.11.22",
"value" : {
"count" : [{
"value" : 1.0
"value" : 1.0
"_id" : "11.11.11.33",
"value" : {
"value" : 1.0
"_id" : "11.11.11.11",
"value" : {
"count" : [{
"count" : [{
"value" : 1.0
"value" : 1.0
"value" : 1.0
。。。。此处省略后面记录
看!!!最后这条记录!瞎了吧!!!传过来的values值的结构都改变了!!!无缘无故的嵌套了几层count,再用
count += v['value']当然没法进行数值运行啦!!!坑爹啊!!!为什么???
Mongodb版本 2.0.1 ,32bit
环境:windowxp 32bit
(少废话,我生产环境当然是用的linux,我这不是做实验么)
我要吃晚饭了先,linux环境我稍后回来继续做~
请问下,& 你这个问题最终解决了没? 剧透下呗? 解决了,你看我另一篇文章就明白啦
浏览: 427696 次
来自: 北京
谢谢分享。。。
我的配置是这样的:&!-- ActiveMQ 连接工厂
ERROR 8976 --- [erContainer#2-1 ...
你好,为什么我启动报错呢setClientID call no ...
写的很详细谢谢---
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'MongoDB数据导入导出成csv或者json - 柳絮凭风 - 博客园
1. 从远程数据表拉取数据到本地json文件
mongoexport --host 远程服务器IP --port 远程服务器端口 --username 远程数据库用户名 --password 远程数据库密码 --db 数据库名 --collection 数据表名 -q "{_id: ObjectId('')}"
--out /home/user/Public/table.json
2. 将本地json文件导入到本地数据库
mongoimport --db 本地数据库名 --collection 本地数据表 --file ~/table.json --type json
阅读(...) 评论()使用mongodb数据库怎么还原json格式的数据_mongodb吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,630贴子:
使用mongodb数据库怎么还原json格式的数据收藏
mongodb新手小白一枚,请大神帮忙一下,已有一个json格式的数据文档,怎么使用mongodb对其进行还原?还原的意思指的是什么?
登录百度帐号推荐应用如何使用python处理带有Mongodb的不规则json数据? - 知乎11被浏览3006分享邀请回答/RexKang/c8b4ff6e4af0添加评论分享收藏感谢收起

我要回帖

更多关于 mongo 导入json文件 的文章

 

随机推荐