2016-06-21 11 views
0

使用して数字で始まる文字列から数値のみを抽出します。どのようにMongoDB</p> <p>私は数字で始まる文字列から数値を抽出するには数字で始まる文字列から数だけを抽出するためにどのようにMongoDB

は私が含まれているコレクションを持って、私はフォーマットの下での結果与え集計クエリ、書きたい

{ 
    "address" :"1103 wood crest" 
    }, 
    { 
    "address": "223 NW 28TH ST" 
    }, 
    { 
    "address": "NW 28TH ST" 
    }, 
    { 
    "address": "28TH ST ava" 
    } 

のような文書:以下:

{ 
    "number": "1103", 
    "address" :"wood crest" 
}, 
{ 
    "number": "223", 
    "address": "223 NW 28TH ST" 
}, 
{ 
    "number": "", 
    "address": "NW 28TH ST" 
}, 
{ 
    "number": "", 
    "address": "28TH ST ava" 
} 

答えて

0

さて、あなたはこれを行うことはできませんがアグリゲーションフレームワークを使用します。

{ 
     "results" : [ 
       { 
         "_id" : ObjectId("57691c0206c5c92152979d3e"), 
         "value" : { 
           "number" : 1103, 
           "address" : "1103 wood crest" 
         } 
       }, 
       { 
         "_id" : ObjectId("57691c0206c5c92152979d3f"), 
         "value" : { 
           "number" : 223, 
           "address" : "223 NW 28TH ST" 
         } 
       }, 
       { 
         "_id" : ObjectId("57691c0206c5c92152979d40"), 
         "value" : { 
           "number" : "", 
           "address" : "NW 28TH ST" 
         } 
       }, 
       { 
         "_id" : ObjectId("57691c0206c5c92152979d41"), 
         "value" : { 
           "number" : "", 
           "address" : "28TH ST ava" 
         } 
       } 
     ], 
     "timeMillis" : 25, 
     "counts" : { 
       "input" : 4, 
       "emit" : 4, 
       "reduce" : 0, 
       "output" : 4 
     }, 
     "ok" : 1 
} 
:あなたの最善の策は、ここではこのような何かを返す mapReduce

db.coll.mapReduce(
    function() { 
     var fields = {}; 
     fields["number"] = parseInt(this.address.match(/^\d+?\s+/)) || ""; 
     fields["address"] = this.address; 
     emit(this._id, fields); 
    }, 
    function(key, value) {}, 
    { "out": { "inline": 1 } } 
) 

です

関連する問題