2016-09-26 139 views
1

我在我的mongo集合中有2250條記錄。如何從Mongo DB集合中提取特定字段

下面是該集合的一個記錄 -

"_id" : bjectId("57e57e3fb04c6373f7000002"), 
"message" : "<logentry revision='15234'><author>447085</author><date>2016-07-19T12:39:19.707782Z</date><paths><path prop-mods='false' text-mods='true' kind='file' action='M'>/itdp/branches/itdpux/branches/base/itdp2.0/src/com/cts/race/beans/ProgramChronicleBean.java</path></paths><msg>day week month function addition </msg></logentry>", 
    "@version" : "1", 
    "@timestamp" : ISODate("2015-09-23T19:10:54.824Z"), 
    "path" : "C:/DevInsight/svnpredictor/svn/svn.log", 
    "host" : "WIN-5BRSCLOQIVN", 
    "type" : "XML", 
    "author" : "447085", 
    "revision" : "15234", 
    "date" : "2016-07-19T12:39:19.707782Z", 
    "paths" : { "path" : [ 
      { "action" : "M", 
       "kind" : "file", 
       "prop-mods" : "false", 
       "text-mods" : "true", 
       "content" : "/itdp/branches/itdpux/branches/base/itdp2.0/src/com/cts/race/beans/ProgramChronicleBean.java" 
      } ] } 

我想提取改版,內容一定日期範圍內記錄的領域。 mongoexport應存儲爲CSV格式,其字段爲revision_id,文件名稱爲。我曾嘗試下面的命令

C:\mongodb\bin\mongoexport --db dbname --collection cname -f 'revision,paths.path.content' --query "{'date': { '$lt': {'$date' : ISODate('%1')} , '$gte': {'$date': ISODate('%2') }}}" --out "C:\test\mongodata.csv" 

我得到下面的輸出與上面的命令 -

{ 「_id」:{ 「$ OID」: 「57e57e3fb04c6373f7000003」}, 「路徑」:{ 「路徑」: [{///整個路徑的標籤內容///}]}

我的實際輸出應該是如下 -

REVISION_ID,FILE_NAME 15234,/ ITDP /支鏈/ itdpux /支鏈/鹼/ itdp2。 0/web/xhtml/progchronicle_iux.xhtml

該命令的一個好處是我能夠提取所有記錄與我指定的日期範圍。

請檢查我的代碼,並幫助我

回答

1

您的paths.path元素是一個數組。如果你想導出正確的,你必須使用以下命令:

C:\mongodb\bin\mongoexport --db dbname --collection cname -f 'revision,paths.path.0.content' --query "{'date': { '$lt': {'$date' : ISODate('%1')} , '$gte': {'$date': ISODate('%2') }}}" --out "C:\test\mongodata.csv" 

東北角會有一些問題,如果paths.path是隨機長度的數組。在這種情況下,您必須使用循環編寫自己的腳本。

0

的問題是,你是不是定義的類型,因此mongoexport創建一個JSON文件,你應該使用

--type = CSV

關於現實問題的出口數組對象,答案已經回答

stackoverflow.com Array

serverfault.com Array

+0

感謝您提供這些鏈接,我早些時候嘗試過發佈我的問題,他們幫助我。 – user2014

相關問題