Cha*_*fot 8 mongodb mongodb-query mongoexport
我有这个查询,但我得到一个语法错误:意外的标识符
mongoexport --db ium --collection events \
--query 'db.events.find({'created_at' : {
$gte: ISODate("2016-03-01T00:00:00.001Z"),
$lte: ISODate("2016-03-29T23:59:59:59.000Z")
},
"name" : "UPDATE_SUCCESS"})' \
--out guille1_test.json
Run Code Online (Sandbox Code Playgroud)
这有什么不对?
Bla*_*ven 10
您需要在使用mongoexport的查询中使用"extended json".因此,指定"日期"的方式是$date相反的.而这--query只是JSON格式的"查询字符串".不是整个命令进入shell:
mongoexport --db ium --collection events \
--query '{
"created_at": {
"$gte": { "$date": "2016-03-01T00:00:00.001Z" },
"$lte": { "$date": "2016-03-29T23:59:59.000Z" }
},
"name": "UPDATE_SUCCESS"
}' \
--out guile1_test.json
Run Code Online (Sandbox Code Playgroud)
还要注意$lte参数中更正的日期字符串,当然还有''JSON参数主体和""内部表达式和值周围的"引用"用法.IT方面重要的是,这些类型的报价都不同,以及"壳论据"应该有自己的"外"的报价为'',否则"壳"尝试计算表达式包含了.
另一个可行的解决方案是使用MongoDB手册中new Date()描述的构造函数。这将导致较小的查询正文足迹,如下所示:
mongoexport --db ium --collection events \
--query '{
"created_at": {
"$gte": new Date("2016-03-01T00:00:00.001Z"),
"$lte": new Date("2016-03-29T23:59:59.000Z")
},
"name": "UPDATE_SUCCESS"
}' \
--out guile1_test.json
Run Code Online (Sandbox Code Playgroud)
这种方法为我提供了开箱即用的方法,而其他所有方法都失败了。没有描述这种方法相对文章在这里。