2016-06-21 11 views
0

Wie die einzige Zahl aus Zeichenfolge extrahieren, die in MongoDB mit der Nummer beginntWie nur Zahl von Zeichenfolge zu extrahieren, die mit der Nummer beginnen MongoDB

Ich will die Nummer aus einer Zeichenfolge extrahieren, die mit der Nummer beginnt.

Ich habe eine Sammlung, die Dokument enthält wie

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

Ich möchte Aggregation Abfrage schreiben, die im folgenden Format zur Folge gibt: unter:

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

Antwort

0

Nun, man kann dies nicht tun mit dem Aggregationsrahmen. Ihre beste Wette hier ist 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 } } 
) 

, die so etwas wie dies zurück:

{ 
     "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 
}